Neo4j-通过建立关系导入数百万个数据

时间:2019-01-27 18:17:03

标签: neo4j cypher

我一直在尝试导入3个不同的CSV文件,而第三个文件包含3M数据。文件1和文件2之间的关系创建成功,因为没有太多数据。但是创建文件2和文件3之间的关系并不成功。数据结构如下。

文件1 :(具有2个标头)例如的数据示例

HEADER1,HEADER2
'A','B'

File2:HEADER2中(在File1和File2之间共有)的(具有两个标头)值

HEADER2,HEADER3                                                                  
'B','C'

File3:Header3中的(具有4个标头)值在file2和file3之间通用 该文件具有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之间建立关系的指针(其中有数百万行的行)将很有帮助!

0 个答案:

没有答案