我的问题与这个问题非常相似:如何通过导入到neo4j的csv文件创建唯一的节点和关系? 我有一个文本文件,大约有250万行,其中有两列,每一列都是节点ID。
每行代表一种关系(共有250万个关系):第一列节点ID -> FOLLOWS -> 第二列节点ID。该文件中大约有80,000个唯一的节点。
根据上面的链接,我做了以下操作:
我假设这段代码:
我应该尝试使用导入工具吗?根据此网站上的示例,neo4j.com/developer/guide-import-csv/下的“超级快速批量导入器用于大型数据集”,
为了实现这一点,我需要重新格式化文件,以便: allnodes.csv 显示
当我运行这个导入时,出现了以下错误:
我该如何修复这个错误?对于CSV文件,我是否将它们放在运行此命令的同一文件夹(neo4j文件夹)中?
1234 345
1234 568
345 984
... ...
每行代表一种关系(共有250万个关系):第一列节点ID -> FOLLOWS -> 第二列节点ID。该文件中大约有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已经存在并且已经有许多其他边(关系)指向和来自其他节点,那么这只会添加另一个从n到m的边(当它已经存在时不会创建全新的节点)
我应该尝试使用导入工具吗?根据此网站上的示例,neo4j.com/developer/guide-import-csv/下的“超级快速批量导入器用于大型数据集”,
./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文件夹)中?