【问题标题】:Output status messages to the console from cypher neo4j-shell从 cypher neo4j-shell 向控制台输出状态消息
【发布时间】:2015-07-03 09:05:41
【问题描述】:

我正在使用neo4j-shell 运行一些 Neo4j 密码查询。当我导入大型 CSV 文件时,它们的执行时间很长。

我想在导入的每个阶段完成时向控制台输出一些消息,以便我们可以在运行时看到导入进度,而无需等待执行完成。

我检查了 Cypher RefCard,但找不到这样的示例。 cypher 是否支持输出到 shell 控制台窗口?

【问题讨论】:

    标签: shell neo4j console cypher


    【解决方案1】:

    “返回”字符串被打印两次,因为第一次是标题,第二次是内容。您可以使用带有反引号的“AS”来更改标题以使其看起来更好:

    MATCH (n) 
    DETACH DELETE n;
    RETURN "Existing data removed" AS `Action:`;
    

    更好的是,你可以将操作输出与消息结合起来:

    MATCH (n) 
    DETACH DELETE n
    RETURN count(n) AS `Existing data removed:`;
    

    【讨论】:

    • 我喜欢这种方法。简单易行。
    【解决方案2】:

    我使用RETURN 完成了这项工作。但是每个RETURN 值都会打印两次! 不确定那里到底发生了什么。但是对于调试来说,这很好。

    RETURN "Removing existing data...";
    MATCH (n)
    DETACH DELETE n;
    RETURN "Existing data removed";
    

    【讨论】:

      【解决方案3】:

      嗯...好的。你可以把 RETURN 语句给你一个线索,例如

      load cvs with headers from 'file1.csv'
      return 'file1'
      load cvs with headers from 'file2.csv'
      return 'file2'
      

      等等

      【讨论】:

        【解决方案4】:

        我觉得这是一个非常有趣的话题。 IMO 以强大的方式实现它的最佳方法是编写一个服务器插件:

        • 您创建一个实现TransactionEventHandler interface的TransactionEventHandler

        • 您会收到一个TransactionData,它代表交易期间发生的更改

        • 您可以将更改转换为 json

        • 最后将它们写入日志

        • 激活附加程序中的日志

        【讨论】:

          【解决方案5】:

          那很好,但我认为这是不可能的。过去,我采用计算密码查询的数量,然后计算终端中成功消息的数量(呃;)

          最好的办法可能是编写一个脚本,将密码查询一个接一个地传送到 shell 并在两者之间输出。

          (此外,您可能已经涵盖了这一点,但为了帮助缓慢导入,请记住创建适当的索引和avoid the eager!)

          【讨论】:

          • 呃。这也是我必须做的。真的可以这么傻吗?仍在寻找解决方案!
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-01-06
          • 1970-01-01
          • 2014-02-27
          • 2010-09-27
          • 2020-07-03
          • 1970-01-01
          • 2016-05-09
          相关资源
          最近更新 更多