【问题标题】:csv load into Neo4j and create relationshipcsv 加载到 Neo4j 并创建关系
【发布时间】:2018-11-28 04:50:29
【问题描述】:

我有一个 csv 文件,其中包含下面的列和提供的示例数据,我已经加载到 Neo4j 中,但在尝试创建关系时卡住了。

**source destination miles**
a         b         5
a         c         6
a         d         20

现在我想创建一个图表,其中源在中间,连接目的地,并在两个站点之间用英里标记。(中间有源的星形图),所以我尝试了下面的查询,它没有在标签上返回英里,我是 Neo4j 的新手,任何帮助表示赞赏,在此先感谢。

LOAD CSV WITH HEADERS FROM "file:///sample.csv" AS line
CREATE (s:src{id: line.source}) 
CREATE (d:dst{id: line.destination}) 
CREATE (s)-[r:trips {total: [line.miles]}]->(d)
RETURN s, d, r;

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    默认情况下,LOAD CSV 要求 CSV 文件使用逗号分隔符,并且它不支持多余的空格。尝试将 CSV 文件的内容更改为:

    source,destination,miles
    a,b,5
    a,c,6
    a,d,20
    

    另外,您应该使用MERGE 而不是CREATE 以避免创建重复节点。并且没有明显需要将英里值存储在数组中,因此该查询将其存储为标量值:

    LOAD CSV WITH HEADERS FROM "file:///sample.csv" AS line
    MERGE (s:src {id: line.source}) 
    MERGE (d:dst {id: line.destination}) 
    CREATE (s)-[r:trips {miles: line.miles}]->(d)
    RETURN s, d, r;
    

    上面的结果是:

    ╒══════════╤══════════╤══════════════╕
    │"s"       │"d"       │"r"           │
    ╞══════════╪══════════╪══════════════╡
    │{"id":"a"}│{"id":"b"}│{"miles":"5"} │
    ├──────────┼──────────┼──────────────┤
    │{"id":"a"}│{"id":"c"}│{"miles":"6"} │
    ├──────────┼──────────┼──────────────┤
    │{"id":"a"}│{"id":"d"}│{"miles":"20"}│
    └──────────┴──────────┴──────────────┘
    

    【讨论】:

    • 没问题。此外,由于您现在在 StackOverflow 中拥有 >=15 的声誉点,因此您也可以vote up 回答。恭喜:-)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多