首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Neo4j中有效地摄取数据

如何在Neo4j中有效地摄取数据
EN

Stack Overflow用户
提问于 2020-06-02 07:54:54
回答 2查看 189关注 0票数 0

我正在寻找关于处理进入Neo4j的数据的最佳方法的建议。

我有一套结构化数据,CSV格式,与旅行有关。数据如下:

"JourneyID" -唯一的参考文献#/主键,例如g 1234

"StartID" - ref#,这是一个车站,例如Station1

"EndIID" - ref# --这是一个站点,例如Station1 (开始和结束可以相同)

"Time" -整数,例如24

假设我有100次旅行/行数据,显示了10个不同站点之间的行程。

我可以在SQL或Excel中看到和处理这些数据。我想在Neo4j中处理这个问题。

这就是我目前的情况:

StartID,以JourneyID为标签,以EndID为标签

这意味着站的CSV中的每一行都是自己的节点。然后,我使用JourneyID (主键)在开始和结束之间创建了一个关系,结果是只将100个节点连接到100个节点。例如从Station1到站2、站1和站3、站1站和站4的连接。它没有显示Station1启动和结束Station1、2和3之间的关系--这就是我想要显示的。

我如何最好地对这些数据建模,以便图表能够看到10个唯一的StartID,连接到不同的EndIDs -显示它们之间的关系?

提前感谢

(全新的图形!)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-03 17:48:33

我认为你不想让一个旅程成为一个节点,你想让旅程ID成为边缘的一个属性:

代码语言:javascript
复制
LOAD CSV WITH HEADERS FROM 'file://input.csv' AS row
MERGE (start:Station {id: row.StartID})
MERGE (end:Station {id: row.EndID})
MERGE (start)-[:JOURNEY {id:row.JourneyID}]->(end)

这更直观地描述了数据,如果您能够更详细地描述旅程,甚至可以将其扩展到不同的关系类型。

编辑:

这是为了回答你的问题,但我不能说这是如何扩大的。我认为这取决于您计划执行的查询类型。

票数 0
EN

Stack Overflow用户

发布于 2020-06-02 19:36:45

这个示例查询使用合并来避免创建重复的节点和关系,应该可以帮助您入门:

代码语言:javascript
复制
LOAD CSV WITH HEADERS FROM 'file://input.csv' AS row
MERGE (start:Station {id: row.StartID})
MERGE (end:Station {id: row.EndID})
MERGE (j:Journey {id: row.JourneyID})
ON CREATE SET j.time = row.Time
MERGE (j)-[:FROM]->(start)
MERGE (j)-[:TO]->(end)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62147346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档