【问题标题】:Load CSV with multiple types of relationships to Neo4j将具有多种类型关系的 CSV 加载到 Neo4j
【发布时间】:2017-08-09 18:30:52
【问题描述】:

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

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    您可以使用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

    【讨论】:

      猜你喜欢
      • 2019-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多