假设我们有一个包含各种关系类型的节点的CSV。是否可以选择在一个查询中加载CSV,允许每种关系类型显示为关系名称,而不会将CSV分解为单独的文件(每种关系类型一个)? (我们不想将关系类型作为属性添加到Edge)。
Id1 | Id2 | RelationshipType
1 | 2 | type1
1 | 3 | type2
2 | 3 | type1
...
我们希望稍后展出&使用类似于以下的查询查询数据:
MATCH l=(p:Id1) - [:type1] - (p:Id2) RETURN l;
MATCH l=(p:Id1) - [:type2] - (p:Id2) RETURN l;
答案 0 :(得分:4)
您可以使用APOC Procedure apoc.create.relationship
。
考虑此CSV文件:
Id1|Id2|RelationshipType
1|2|type1
1|3|type2
2|3|type1
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 *
结果图将是:
注意: 请记住根据您使用的Neo4j版本安装APOC程序。请查看Version Compatibility Matrix。