我的问题与这个非常相似:如何通过neo4j中导入的csv文件创建独特的节点和关系? https://stackoverflow.com/questions/25090255/how-to-create-unique-nodes-and-relationships-by-csv-file-imported-in-neo4j我有一个大约有 250 万行的文本文件,有两列,每一列都带有节点 ID:
1234 345
1234 568
345 984
... ...
每行代表一个关系(因此有 250 万个关系):first_column nodeid-> FOLLOWS -> secondary_column nodeid。该文件中有大约 80,000 个唯一节点。
根据上面的链接,我做了:
USING PERIODIC COMMIT 1000
LOAD CSV FROM 'file:///home/user_name/Desktop/bigfile.csv' AS line FIELDTERMINATOR ' '
MERGE (n:Userid { id: toInt(line[0]) })
WITH line, n
MERGE (m:Userid { id: toInt(line[1]) })
WITH m,n
MERGE (n)-[:FOLLOWS]->(m)
我假设这段代码
- 如果节点 n 或 m 不存在,则创建它(如果存在则查找它),并创建从 n 到 m 的关系。
- 如果 n 或 m 存在,并且已经有许多其他边(关系)指向和来自其他节点,这只会添加从 n 到 m 的另一条边(当节点已经存在时,不会创建一个全新的节点)
我的主要问题是我想知道如何使这个过程更快。
这是在 Ubuntu 上完成的,我将 conf/neo4j-wrapper.conf 文件中的内存值从 512 MB 更改为 2048 MB。 (我可以在虚拟机上增加的最大值)
我应该尝试使用导入工具吗?
基于本网站 neo4j.com/developer/guide-import-csv/ 上的“Super Fast Batch Importer For Huge Datasets”下的示例,
./bin/neo4j-import --into mydatabase.db --id-type INTEGER \
--nodes allnodes.csv \
--delimiter " " \
--relationships:FOLLOWS bigfile.csv
为此,我需要重新格式化文件,以便:
allnodes.csv 显示
userID:ID(Userid)
1234
5678
...
并且 bigfile.csv 显示
:START_ID(Userid) :END_ID(Userid)
1234 345
1234 568
345 984
*Two columns delimited by space*
当我运行此导入时,出现此错误:
Input error: Expected '--nodes' to have at least 1 valid item, but had 0 []
Caused by:Expected '--nodes' to have at least 1 valid item, but had 0 []
java.lang.IllegalArgumentException: Expected '--nodes' to have at least 1 valid item, but had 0 []
我该如何修复这个错误?对于 csv 文件,我是否将它们放在运行此命令的同一文件夹中(neo4j 文件夹)?