使用neo4j和cypher

时间:2016-05-26 15:41:18

标签: database neo4j cypher graph-databases

我有一个存储在.csv中的小型有向图作为稀疏矩阵。该文件包含以下格式的2列:

1,2
2,3
1,3
1,4
2,5
3,4
3,5
4,5

每一行基本上是两个节点之间的邻接关系:1-> 2,2-> 3,1-> 3等。我想将这些数据导入neo4j并创建一个图形(作为第一个步骤它可以是无向图。)

我尝试了以下Cypher代码:

LOAD CSV FROM 'file:///dummy.csv' AS line
CREATE((:node {`name`:line[1]})-[:`connects`]->(:node {`name`:line[2]}))

这是我迄今为止走得最远,但结果并不是我想要的。我正在将文件读入neo4j,但我只得到多个由两个节点组成的小图,其中有许多节点重复。我的目标是将每一行读作邻接关系,并添加与现有节点的连接,而不会产生节点重复。另外,理想情况下,我希望在图形可视化期间在每个节点的顶​​部显示名称属性(而不是节点ID)。感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您应该使用MERGE来避免创建重复的节点和关系:

LOAD CSV FROM 'file:///dummy.csv' AS line
MERGE (a:node {name:line[0]})
MERGE (b:node {name:line[1]})
MERGE (a)-[:connects]->(b);

另请参阅the documentation for how to style the browser visualization