将具有多种类型关系的 CSV 加载到 Neo4j

ski*_*bee 4 neo4j cypher

假设我们有一个包含各种关系类型节点的 CSV。是否有一个选项可以在一个查询中加载 CSV,允许将每种关系类型显示为关系名称,而无需将 CSV 分解为单独的文件(每个关系类型一个)?(我们不想将关系类型作为属性添加到 Edge)。

Id1 | Id2 | RelationshipType   
1 | 2 | type1  
1 | 3 | type2   
2 | 3 | type1  
... 
Run Code Online (Sandbox Code Playgroud)

我们希望稍后使用类似于以下的查询来显示和查询数据:

MATCH l=(p:Id1) - [:type1] - (p:Id2) RETURN l;  
MATCH l=(p:Id1) - [:type2] - (p:Id2) RETURN l;
Run Code Online (Sandbox Code Playgroud)

Bru*_*res 5

您可以使用APOC 程序来完成 apoc.create.relationship

考虑这个 CSV 文件:

Id1|Id2|RelationshipType
1|2|type1
1|3|type2
2|3|type1
Run Code Online (Sandbox Code Playgroud)

LOAD CSV查询将是:

LOAD CSV WITH HEADERS FROM 'file:///sample.csv' AS line FIELDTERMINATOR '|'
WITH line
MERGE(node0:Node {id : line.Id1})
MERGE(node1:Node {id : line.Id2})
WITH node0, node1, line
CALL apoc.create.relationship(node0, line.RelationshipType, {}, node1) YIELD rel
RETURN *
Run Code Online (Sandbox Code Playgroud)

结果图将是:

结果图

注意:记得根据你使用的Neo4j版本安装APOC程序。查看版本兼容性矩阵