How to specify relationship type in CSV?

前端 未结 3 1554
野性不改
野性不改 2021-01-21 23:38

I have a CSV file with data like:

ID,Name,Role,Project
1,James,Owner,TST
2,Ed,Assistant,TST
3,Jack,Manager,TST

and want to create people whose

相关标签:
3条回答
  • 2021-01-21 23:40

    Right now you can't as this is structural information.

    Either use neo4j-import tool for that.

    Or specify it manually as you did, or use this workaround:

    load csv with headers from 'file:/../x.csv' as line 
    match (p:Project {code: line.Project}) 
    create (n:Individual {name: lineName})
    foreach (x in case line.Role when "Owner" then [1] else [] end |
      create (n)-[r:Owner]->(p)
    )
    foreach (x in case line.Role when "Assistant" then [1] else [] end |
      create (n)-[Assistant]->(p)
    )
    foreach (x in case line.Role when "Manager" then [1] else [] end |
      create (n)-[r:Manager]->(p)
    )
    
    0 讨论(0)
  • 2021-01-21 23:40

    this question is old, but there is a post by Mark Needham

    that provide a great and easy solution using APOC

    as follow

    load csv with headers from "file:///people.csv" AS row
    MERGE (p1:Person {name: row.node1})
    MERGE (p2:Person {name: row.node2})
    
    WITH p1, p2, row
    CALL apoc.create.relationship(p1, row.relationship, {}, p2) YIELD rel
    
    RETURN rel
    

    note: the "YIELD rel" is essential and so for the return part

    0 讨论(0)
  • 2021-01-21 23:51

    Michael's answer stands, however, I've found that what I can do is specify an attribute to the relationship, like this:

    load csv from 'file:/.../x.csv' as line 
    match (p:Project {code: line[3]}) 
    create (i:Individual {name: line[1]})-[r:Role { type: line[2] }]->(p)
    

    and I can make Neo4j display the type attribute of the relationship instead of the label

    0 讨论(0)
提交回复
热议问题