【问题标题】:Load only few samples from large csv file in neo4j从 neo4j 中的大型 csv 文件中仅加载少量样本
【发布时间】:2017-08-22 05:03:36
【问题描述】:

我是 neo4j 数据库的新手。我有一个大型 csv 文件,无法放入我机器的内存中。在我使用USING PERIODIC COMMIT 加载数据库中的所有记录之前,我想在小数据样本上测试我的密码查询。如何加载仅加载 1000 行数据并测试我的查询。

数据的列简化为[Employee, CompanyName]。我想创建(:Employee)-[:Employed]->(:Company) 的关系。 Employee 和 CompanyName 节点已经加载到数据库中。

【问题讨论】:

    标签: csv neo4j cypher


    【解决方案1】:

    您可以限制要导入的行:

    USING PERIODIC COMMIT
    LOAD CSV WITH HEADERS 'file:///yourcsvfile.csv' AS row
    WITH row LIMIT 1000
    ...
    

    然后继续您通常的 import Cypher 语句。这将只读取文件的前 1000 行。

    【讨论】:

    • si 还有办法应用偏移量吗?
    【解决方案2】:

    只需使用文件的前 1000 行创建一个 csv 文件(然后使用它)。 在 Linux/Unix 上:

    head -1000 yourinputfile.csv > output1000.csv
    

    在 Windows (powershell) 上:

    Get-Content "yourinputfile.csv" | select -First 1000 | Out-File "output1000.csv"
    

    希望这会有所帮助。

    问候, 汤姆

    【讨论】:

    • 感谢您的回答。它可以工作,但我正在寻找内置的 neo4j 功能(如果有的话)。
    【解决方案3】:

    如果 CSV 数据集记录少于 1000 万条,则使用 LOAD CSV 方法,否则使用批量上传方法。

    加载和读取 CSV 的优化代码之一是:

    :auto USING PERIODIC COMMIT 1000
    LOAD CSV WITH HEADERS FROM 'file:///file_name.csv' AS row
    WITH row LIMIT 10000
    

    此查询首先在内存中加载 1000 条记录,执行它,然后加载一组另外 1000 条记录,直到 100,00 条记录。

    注意:确保将 file_name.csv 放在导入文件夹中。

    【讨论】:

      猜你喜欢
      • 2019-07-16
      • 2020-01-04
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 2019-10-26
      • 2015-10-22
      • 1970-01-01
      • 2021-03-29
      相关资源
      最近更新 更多