如何使用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
创建关系(使用动态标签)。
我想读入一个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
创建关系(使用动态标签)。