neo4j - 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 之间创建关系的任何指示都会有所帮助!
解决方案
推荐阅读
- java - 在 java 中向数组提供元素时,最佳实践是什么?
- javascript - JS - 将数组中的唯一列与重复项连接起来
- android - 如何从 recyclerView 和 sqlite 数据库中删除卡片视图?(科特林 - 安卓)
- compilation - How do I compile Forth code for the J1 CPU?
- android - ConstraintLayout views at top left when added programatically
- azure - 从 CosmosDB 更改源读取后如何处理 Azure 函数的处理失败?
- html - 使网格第一项全高
- mysql - 为以下场景编写一个 sql 或块生成下面的结果集
- objective-c - Converting Objective-C memcpy to Swift
- r - Adding error bars to a grouped R plotly bar chart