【问题标题】:Cypher query - creation of graph from csv fileCypher 查询 - 从 csv 文件创建图形
【发布时间】:2018-11-30 03:02:43
【问题描述】:

我有两个 csv 文件: (clean_data_2.csv:示例内容如下)

(stationdata.csv:示例内容如下)

根据我的密码查询,我希望每个站都表示为节点,关系表示为计数。

我做了这样的事情:

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///stationdata.csv" AS line
CREATE (s:station{id:line.station_id,station_name:line.name});

加载所有站点数据:它创建所有节点 - 源列和目标列

LOAD CSV WITH HEADERS FROM "file:///clean_data_2.csv" AS line
MATCH (src:station),(dst:station)
CREATE (src)-[:TO{ count: [line.count]}]->(dst);

上面的部分运行了,但是没有给我算节点之间的关系。

我是 Neo4j 的新手 - 图形数据库,谢谢!

【问题讨论】:

  • 您能否在问题中显示 2 个 CSV 文件的实际内容
  • 嗨@cybersam:我添加了sn-ps :)
  • 这有点好,但是你能显示原始数据的sn-ps——而不是工具(如电子表格应用程序)显示的任何内容吗?另外,请删除原来的表格数据,不正确。
  • 另外,一个明显的问题是您的第二个查询的 MATCH 子句没有为 srcdst 指定 station 节点的 names,所以所有可能的对station 节点将被匹配。这应该导致与count 属性创建许多额外的TO 关系,但您似乎在说您没有得到任何count 属性?
  • @cybersam:是的,没错!我得到了额外的关系,但我无法弄清楚如何为 src 和 dst 节点指定名称。抱歉,我的问题不清楚:)

标签: neo4j cypher


【解决方案1】:

您的第二个查询的MATCH 子句没有指定srcdst 的站节点名称,因此所有可能的站节点对都将匹配。这将导致创建大量与count 属性的额外TO 关系。

尝试使用它而不是第二个查询:

LOAD CSV WITH HEADERS FROM "file:///clean_data_2.csv" AS line
MATCH (src:station {name: line.src}), (dst:station {name: line.dst})
CREATE (src)-[:TO {count: TOINTEGER(line.count)}]->(dst);

此查询在 MATCH 子句中指定站名,而您的查询并未这样做。

此查询还将line.count 值从字符串(由LOAD CSV 生成的所有值)转换为整数,并将其作为标量值分配给count 属性,因为似乎没有需要它是一个数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 2013-09-19
    • 1970-01-01
    相关资源
    最近更新 更多