如何使用py2neo读取csv文件在neo4j中创建不同的关系?

How to create different relationships in neo4j using py2neo reading csv files?

我想读入一个csv文件,其中前两列是节点名称,第三列是节点关系。目前我在 py2neo 中使用它:

query2 = """

使用定期提交

从 "file:///data.csv" AS 行 HEADERS 加载 CSV

合并(主题:主题{名称:line.Topic})

MERGE(结果:结果{名称:line.Result})

CREATE UNIQUE(主题)-[:DISCUSSES]->(结果)

"""

如何使用 csv 文件中的第三列来设置关系,而不是将所有关系都设置为 "DISCUSSES"?

我试过了,但它没有 UNIQUE 选项:

query1 = """

使用定期提交

从 "file:///data.csv" AS 行 HEADERS 加载 CSV

合并(主题:主题{名称:line.Topic})

MERGE(结果:结果{名称:line.Result})

合并(关系:关系{名称:line.Relation})

有主题、结果、行

CALL apoc.merge.relationship(主题,​​ line.Relation, {}, {}, 结果) YIELD rel as rel1

RETURN 话题,结果

"""

实际上,您的第二个查询几乎是正确的(除了它有一个无关的 MERGE 子句)。这是更正后的查询:

USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "file:///data.csv" AS line
MERGE (topic:Topic {name: line.Topic})
MERGE (result:Result {name: line.Result})
WITH topic, result, line
CALL apoc.merge.relationship(topic, line.Relation, {}, {}, result) YIELD rel
RETURN topic, result

如果关系尚不存在,apoc.merge.relationship 调用相当于执行 MERGE 创建关系(使用动态标签)。