我有一个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;
答案 0 :(得分:1)
默认情况下,LOAD CSV
期望CSV文件使用逗号分隔符,并且不支持多余的空格。尝试将CSV文件的内容更改为此:
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"}│
└──────────┴──────────┴──────────────┘