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

时间:2017-08-09 18:30:52

标签: neo4j cypher

假设我们有一个包含各种关系类型的节点的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;

1 个答案:

答案 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 *

结果图将是:

Resultant Graph

注意: 请记住根据您使用的Neo4j版本安装APOC程序。请查看Version Compatibility Matrix