CSV加载到Neo4j中并创建关系

时间:2018-11-28 04:50:29

标签: neo4j cypher

我有一个csv文件,其中包含下面的列和提供的示例数据,并且在尝试创建关系时,我已将其加载到Neo4j中并卡住了。

**source destination miles**
a         b         5
a         c         6
a         d         20

现在,我想创建一个图表,其中源位于中间且连接的目的地周围,并且在两个停靠点之间标有英里(一个星图,中间标有源),因此我在下面的查询中进行了尝试,它没有在标签上返回英里,我是Neo4j的新手,感谢您的帮助,在此先感谢您。

LOAD CSV WITH HEADERS FROM "file:///sample.csv" AS line
CREATE (s:src{id: line.source}) 
CREATE (d:dst{id: line.destination}) 
CREATE (s)-[r:trips {total: [line.miles]}]->(d)
RETURN s, d, r;

1 个答案:

答案 0 :(得分:1)

默认情况下,LOAD CSV期望CSV文件使用逗号分隔符,并且不支持多余的空格。尝试将CS​​V文件的内容更改为此:

source,destination,miles
a,b,5
a,c,6
a,d,20

此外,您应该使用MERGE而不是CREATE以避免创建重复的节点。而且,没有必要将Miles值存储在数组中,因此此查询将其存储为标量值:

LOAD CSV WITH HEADERS FROM "file:///sample.csv" AS line
MERGE (s:src {id: line.source}) 
MERGE (d:dst {id: line.destination}) 
CREATE (s)-[r:trips {miles: line.miles}]->(d)
RETURN s, d, r;

以上结果为:

╒══════════╤══════════╤══════════════╕
│"s"       │"d"       │"r"           │
╞══════════╪══════════╪══════════════╡
│{"id":"a"}│{"id":"b"}│{"miles":"5"} │
├──────────┼──────────┼──────────────┤
│{"id":"a"}│{"id":"c"}│{"miles":"6"} │
├──────────┼──────────┼──────────────┤
│{"id":"a"}│{"id":"d"}│{"miles":"20"}│
└──────────┴──────────┴──────────────┘