你好我试图在我的ubuntu 12.04中将csv文件中的一些数据导入neo4j。
csv文件是一个双列数据文件,没有标题,其格式如下:
12ffew3213,232rwe13
12ffew3213,5yur2ru2r
rwerwerw3,432rwe13
rwerwerw3,5yur2ru2r
事物是第0行和第1行中的数据不唯一,例如数据可能是3000行,并且只有100个唯一的row0值和300个唯一的row1值。
我想构建一个图表,其中包含100个row0节点和300个row1节点以及这些节点之间的3000个关系(如果12ffew3213,232rwe13出现两次,则有2个边缘)。
因为我是neo4j和Cypher的新手。在尝试使用CREATE和MERGE一段时间之后,我仍然无法构建UNIQUE节点。我使用了像
这样的东西LOAD CSV FROM 'file:///home/nate/Downloads/file.csv' AS line
MERGE (:A { number: toString(line[0])})-[:LIKES]->(:B { ID: toString(line[1])})
任何想法 - 谢谢你!
答案 0 :(得分:12)
这是你做的。
LOAD CSV FROM 'file:///home/nate/Downloads/file.csv' AS line
MERGE (n:A {number : line[0]})
WITH line, n
MERGE (m:B {ID : line[1]})
WITH m,n
MERGE (n)-[:LIKES]->(m);
首先创建或匹配:A
节点,然后创建或匹配:B
节点,然后创建或匹配关系。 WITH
子句收集序列中每个点的结果,以便在下一个中使用。要详细了解WITH
条款,请阅读Section 9.5 in the Neo4j Manual。
答案 1 :(得分:0)
对于带有标题的 csv 也是如此。如果我们的标题是 'head1','head2' 我们的代码将是:
LOAD CSV WITH HEADERS FROM 'file:///home/nate/Downloads/file.csv' AS line
MERGE (n:A {number : line.head1})
WITH line, n
MERGE (m:B {ID : line.head2})
WITH m,n
MERGE (n)-[:LIKES]->(m);