在 Neo4j 中,有没有办法使用 loadcsv 动态读取关系名称?
In Neo4j, is there a way to read relationship name dynamically using 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
现在我想要 "route" 名称作为节点之间的关系。因此,我在 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
我想知道这是否被禁用以强制执行具有 "pure" 动词类型关系并避免创建相同关系的多重性的良好做法。像 "connected by 1_1" "connected by 1_2".
或者我只是没有找到正确的 link 或者没有使用正确的语法。感谢帮助!
现在你不能,因为这是结构信息。
- 为此使用 neo4j-import tool。
- 或者每种类型使用一个 CSV 文件并拼出 rel-type。
- 甚至过滤 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)
还有一个使用假条件的技巧,但你仍然需要拼写出来。
我已经使用 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
现在我想要 "route" 名称作为节点之间的关系。因此,我在 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
我想知道这是否被禁用以强制执行具有 "pure" 动词类型关系并避免创建相同关系的多重性的良好做法。像 "connected by 1_1" "connected by 1_2".
或者我只是没有找到正确的 link 或者没有使用正确的语法。感谢帮助!
现在你不能,因为这是结构信息。
- 为此使用 neo4j-import tool。
- 或者每种类型使用一个 CSV 文件并拼出 rel-type。
- 甚至过滤 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)
还有一个使用假条件的技巧,但你仍然需要拼写出来。