我想加载一个csv,一个有序事件的时间轴来创建节点列表,但是我在创建:Next关系来链接两行时遇到了麻烦。
LOAD CSV WITH HEADERS FROM "file:////events.csv" AS row
merge (:Event{id:row.id})-[:NEXT]-> ??? (:Event {id:row[+1].id)
我想一种方法是在CSV中有一列指向下一行ID。
以下查询假定节点已存在。如果您还想根据需要创建节点,请将MATCH
替换为MERGE
。
您可以使CSV文件中的每一行包含数量可变的节点ID,用于需要按顺序在单个链中连接在一起的节点。在这种情况下,CSV文件不应包含标题行。
LOAD CSV FROM "file:///events.csv" AS ids
UNWIND [i IN RANGE(1, SIZE(ids)-1) | {a: ids[i-1], b: ids[i]}] AS pair
MATCH (a:Event {id: pair.a})
MATCH (b:Event {id: pair.b})
MERGE (a)-[:NEXT]->(b)
您可以使CSV文件中的每一行仅包含一对需要按顺序连接在一起的节点ID。在这种情况下,CSV文件可能具有标题行,如本示例所示(使用a
和b
作为标题)。
LOAD CSV WITH HEADERS FROM "file:///events.csv" AS pair
MATCH (a:Event {id: pair.a})
MATCH (b:Event {id: pair.b})
MERGE (a)-[:NEXT]->(b)