使用Neo4j load csv命令有困难
我有一个3800000000行的csv文件,每行有两个名字,这意味着两个人彼此认识:使用Neo4j load csv命令有困难,csv,neo4j,Csv,Neo4j,我有一个3800000000行的csv文件,每行有两个名字,这意味着两个人彼此认识: name,friend a,b a,c a,d f,a e,a d,g 我需要计算所有人的关系。 首先,我使用cypher: CREATE (n:Patent {name:'a'}) CREATE (n:Patent {name:'b'}) CREATE (n:Patent {name:'c'}) CREATE (n:Patent {name:'d'}) CREATE (n:Patent {name:'e'}
name,friend
a,b
a,c
a,d
f,a
e,a
d,g
我需要计算所有人的关系。
首先,我使用cypher:
CREATE (n:Patent {name:'a'})
CREATE (n:Patent {name:'b'})
CREATE (n:Patent {name:'c'})
CREATE (n:Patent {name:'d'})
CREATE (n:Patent {name:'e'})
CREATE (n:Patent {name:'f'})
CREATE (n:Patent {name:'g'})
MATCH (a:Patent {name:'a'}),
(b:Patent {name:'b'})
MERGE (a)-[:CITED]->(b)
MATCH (a:Patent {name:'a'}),
(b:Patent {name:'c'})
MERGE (a)-[:CITED]->(b)
MATCH (a:Patent {name:'a'}),
(b:Patent {name:'d'})
MERGE (a)-[:CITED]->(b)
MATCH (a:Patent {name:'f'}),
(b:Patent {name:'a'})
MERGE (a)-[:CITED]->(b)
MATCH (a:Patent {name:'e'}),
(b:Patent {name:'a'})
MERGE (a)-[:CITED]->(b)
MATCH (a:Patent {name:'d'}),
(b:Patent {name:'g'})
MERGE (a)-[:CITED]->(b)
然后,我得到了结果:
但是行数太多,我尝试了load csv
batch import命令:
:auto USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:///friend_relation.csv" AS line
MATCH (a:Friend {name: line.name}),
(b:Friend {name: line.friend}) MERGE (a)-[:KNOWS]->(b)
它失败了:
我将大文件拆分为多个samll文件,并使用
csv load
来实现我的目标,我的问题是什么?如果它没有返回任何内容,那是因为MATCH
子句没有找到任何内容:
试用
:auto USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:///friend_relation.csv" AS line
MERGE (a:Friend {name: line.name})
MERGE (b:Friend {name: line.friend})
MERGE (a)-[:KNOWS]->(b)