将数据批量加载到Neo4J的最佳方法

时间:2017-04-12 22:28:51

标签: neo4j

我们正在尝试将数百万个节点和关系加载到Neo4j中。我们目前正在使用以下命令

使用定期委托 从“file:customers.csv”AS行加载带有标题的CSV 创建(:客户......

但这花费了我们很多时间。

我确实看到了一个直接修改neo4j文件的链接。 http://blog.xebia.com/combining-neo4j-and-hadoop-part-ii/

但上面的链接似乎很老了。想知道上述过程是否仍然有效?

“neo4j-spark-connector”Github链接存在问题。没有完全更新。

https://github.com/neo4j-contrib/neo4j-spark-connector/issues/15

其中最好的方法是什么?

3 个答案:

答案 0 :(得分:0)

最快的方式,特别是对于大型数据集,应该通过import tool而不是通过带有LOAD CSV的Cypher。

答案 1 :(得分:0)

如果您正在使用LOAD CSV,可能使用MERGE,我强烈建议添加唯一约束 - 对我们来说,它加快了一个小的导入(100k节点)100倍左右

答案 2 :(得分:0)

您可以使用apoc方法,该方法对大型数据集的性能更好。以下是一个示例密码查询

CALL apoc.periodic.iterate(
    'CALL apoc.load.csv(file_path) YIELD lineNo, map as row, list return row',
    'MATCH (post:Post {id:row.`:END_ID(Post)`})
     MATCH (owner:User {id:row.`:START_ID(User)`})
     MERGE (owner)-[:ASKED]->(post);', 
    {batchSize:500, iterateList:true, parallel:true}
);

下面是文档链接: https://neo4j-contrib.github.io/neo4j-apoc-procedures/#_examples_for_apoc_load_csv