首页 > 解决方案 > Neo4j - 通过关系创建导入数百万数据

问题描述

我一直在尝试导入 3 个不同的 CSV 文件,其中第三个文件包含 3M 数据。由于数据不多,文件 1 和文件 2 之间的关系创建成功。但是文件 2 和文件 3 之间的关系创建不成功。数据结构如下。

文件 1:(这有 2 个标题)例如数据示例

HEADER1,HEADER2
'A','B'

File2:(这有两个标题)文件1和文件2之间共有的HEADER2中的值

HEADER2,HEADER3                                                                  
'B','C'

File3:(这有4个标题)文件2和file3之间共有的Header3中的值这个文件有3M个值

HEADER3,HEADER4,HEADER5,HEADER6
'C','D','E','F'

我想在节点之间创建如下关系:如果:file1节点的HEADER2属性等于:file2节点的HEADER2属性,则应在这些节点之间创建关系。并且应该使用它们的属性在:file2/:file3节点之间类似地创建关系。HEADER3

我正在使用以下代码加载数据,但 JVM 内存不足,因为关系创建的数量非常多:

USING PERIODIC COMMIT 50000
LOAD CSV WITH HEADERS FROM "file:///D:/file3.csv" as csvline
MATCH (file2:file2 {HEADER3: csvline.HEADER3}) 
create (file3:file3 {HEADER3: csvline.HEADER3, HEADER4: toString(csvline.HEADER4), HEADER5: toString(csvline.HEADER5), HEADER6: csvline.HEADER6})
CREATE (file2)-[:HAS_SERVICE]->(file3)

JVM 在浏览器上出现“超出 gc 开销限制”错误的内存不足。关于如何在有数百万行的文件 1 、文件 2 和文件 3 之间创建关系的任何指示都会有所帮助!

标签: neo4jcypher

解决方案


推荐阅读