在neo4j中从csv中提取唯一节点

时间:2015-08-28 12:28:37

标签: neo4j duplicates cypher unique csv-import

以最短的方式我的问题如下: 我需要从以下csv文件中获取

(HTTPS ...)drive.google.com/file/d/0B-y9nPaqlH6XdXZsYzAwLThacTg/view?usp=sharing

neo4j中的以下数据结构(使用cypher导入):

https://drive.google.com/file/d/0B-y9nPaqlH6XdlZHM216eDRSX3c/view?usp=sharing

而不是:

[https://drive.google.com/file/d/0B-y9nPaqlH6XdE9vZ0gyNU1lR0U/view?usp=sharing]

解释时间越长:

我想,我的问题的解决方案只需要理解(un)绑定元素。

但我在很多方面尝试了很多次(首先创建单个节点,然后在空数据库中创建):

LOAD CSV with headers FROM "file:///C:/Users/user/Desktop/neo4j help/calling.csv"
AS csvLine

MERGE (u1:Person { number:(csvLine.A), name:(csvLine.name_A)}) MERGE (u2:Person { number:(csvLine.B), name:(csvLine.name_B)})

MERGE (u1:Person { number:(csvLine.A), name:(csvLine.name_A)})-[c:called]->(u2:Person { number:(csvLine.B), name:(csvLine.name_B)})
RETURN u1.name,c,u2.name

我没有想知道结果只是错误信息:

  

此处无法使用属性或标签创建u1。它已经存在于   这个背景

如果没有“预合并”节点,我会得到上面的结果(在粉红色图片中)

我需要什么来获得想要的结果(在第一张图片中)?

1 个答案:

答案 0 :(得分:2)

您无需重新定义u1和u2节点。只需重用标识符并合并关系:

LOAD CSV with headers FROM "file:///C:/Users/user/Desktop/neo4j help/calling.csv"
AS csvLine

MERGE (u1:Person { number:(csvLine.A), name:(csvLine.name_A)}) 
MERGE (u2:Person { number:(csvLine.B), name:(csvLine.name_B)})
MERGE (u1)-[c:CALLED]->(u2)
RETURN u1.name,c,u2.name
Nb:我认为你的图片都是一样的,你可以将它们发布在你的问题中,很多人会跳过你的问题,因为他们需要打开2或3个以上的浏览器窗口