我已经使用Cypher使用LOAD CSV方法创建了节点。下一部分是创建与节点的关系。为此,我有以下格式的CSV
fromStopName,from,route,toStopName,to
Swargate,1,route1_1,Swargate Corner,2
Swargate Corner,2,route1_1,Hirabaug,3
Hirabaug,3,route1_1,Maruti,4
Maruti,4,route1_1,Mandai,5
现在我想用"路由"名称作为节点之间的关系。因此,我在CYPHER 中使用以下LOAD CSV命令
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:C:\\busroutes.csv" AS row
MATCH(f {name:row.fromStopName}),(t {name:row.toStopName}) CREATE f - [:row.route]->t
但看起来,我做不到。相反,若我静态命名关系,然后从csv路由字段分配属性,它就可以工作了。
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:C:\\busroutes.csv" AS row
MATCH(f {name:row.fromStopName}),(t {name:row.toStopName}) CREATE f - [:CONNECTS {route: row.route}]->t
我想知道这是否被禁用,以强制执行"纯"动词类关系的良好实践,并避免创建相同关系的多重性。如"由1_1连接"由1_2连接"。
或者我只是找不到正确的链接或者没有使用正确的语法。感谢帮助!
现在不能,因为这是结构信息。
- 要么使用neo4j导入工具
- 或者每个类型使用一个CSV文件,并拼写出rel类型
- 或者甚至过滤CSV并进行多次通过:
例如
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:C:\\busroutes.csv" AS row
with row where row.route = "route1_1"
MATCH(f {name:row.fromStopName}),(t {name:row.toStopName})
CREATE (f)-[:route1_1]->(t)
还有一个使用假条件句的技巧,但你仍然必须把它们拼出来。