【发布时间】:2015-07-03 09:05:41
【问题描述】:
我正在使用neo4j-shell 运行一些 Neo4j 密码查询。当我导入大型 CSV 文件时,它们的执行时间很长。
我想在导入的每个阶段完成时向控制台输出一些消息,以便我们可以在运行时看到导入进度,而无需等待执行完成。
我检查了 Cypher RefCard,但找不到这样的示例。 cypher 是否支持输出到 shell 控制台窗口?
【问题讨论】:
标签: shell neo4j console cypher
我正在使用neo4j-shell 运行一些 Neo4j 密码查询。当我导入大型 CSV 文件时,它们的执行时间很长。
我想在导入的每个阶段完成时向控制台输出一些消息,以便我们可以在运行时看到导入进度,而无需等待执行完成。
我检查了 Cypher RefCard,但找不到这样的示例。 cypher 是否支持输出到 shell 控制台窗口?
【问题讨论】:
标签: shell neo4j console cypher
“返回”字符串被打印两次,因为第一次是标题,第二次是内容。您可以使用带有反引号的“AS”来更改标题以使其看起来更好:
MATCH (n)
DETACH DELETE n;
RETURN "Existing data removed" AS `Action:`;
更好的是,你可以将操作输出与消息结合起来:
MATCH (n)
DETACH DELETE n
RETURN count(n) AS `Existing data removed:`;
【讨论】:
我使用RETURN 完成了这项工作。但是每个RETURN 值都会打印两次!
不确定那里到底发生了什么。但是对于调试来说,这很好。
RETURN "Removing existing data...";
MATCH (n)
DETACH DELETE n;
RETURN "Existing data removed";
【讨论】:
嗯...好的。你可以把 RETURN 语句给你一个线索,例如
load cvs with headers from 'file1.csv'
return 'file1'
load cvs with headers from 'file2.csv'
return 'file2'
等等
【讨论】:
我觉得这是一个非常有趣的话题。 IMO 以强大的方式实现它的最佳方法是编写一个服务器插件:
您创建一个实现TransactionEventHandler interface的TransactionEventHandler
您会收到一个TransactionData,它代表交易期间发生的更改
您可以将更改转换为 json
最后将它们写入日志
激活附加程序中的日志
【讨论】:
那很好,但我认为这是不可能的。过去,我采用计算密码查询的数量,然后计算终端中成功消息的数量(呃;)
最好的办法可能是编写一个脚本,将密码查询一个接一个地传送到 shell 并在两者之间输出。
(此外,您可能已经涵盖了这一点,但为了帮助缓慢导入,请记住创建适当的索引和avoid the eager!)
【讨论】: