繁体   English   中英

如何通过在neo4j中导入的csv文件创建唯一的节点和关系?

[英]How to create unique nodes and relationships by csv file imported in neo4j?

您好,我试图将 csv 文件中的一些数据导入到我的 ubuntu 12.04 中的 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])})

有什么想法吗??谢谢!

这就是你要做的。

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子句的更多信息,请阅读Neo4j 手册中的第 9.5 节

带有标题的 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM