Neo4j-加载CSV和链关系

问题描述 投票:1回答:1

我想加载一个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。

neo4j cypher
1个回答
0
投票

以下查询假定节点已存在。如果您还想根据需要创建节点,请将MATCH替换为MERGE

选项1:

您可以使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)

选项2:

您可以使CSV文件中的每一行仅包含一对需要按顺序连接在一起的节点ID。在这种情况下,CSV文件可能具有标题行,如本示例所示(使用ab作为标题)。

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)
© www.soinside.com 2019 - 2024. All rights reserved.