在Neo4j中,是否有一种方法可以使用loadcsv动态读取关系名称



我已经使用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)

还有一个使用假条件句的技巧,但你仍然必须把它们拼出来。

相关内容

最新更新