微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Neo4j:来自一个 CSV 列的多个可能节点

如何解决Neo4j:来自一个 CSV 列的多个可能节点

我有一个包含企业和企业主的 CSV 文件,如下所示:

S/n 业务 Business_ID Owned_By 性别
1 白羊座私人有限公司 12345 詹姆斯邦德
2 Taurus Pte Ltd 23456 丹妮莉丝 女性
3 gemini Pte Ltd 34567 Taurus Pte Ltd 不适用

我想创建一个图表,以企业为节点,所有者为节点,企业与所有者之间的关系。对于 s/n 1 和 2,这是非常简单的:

LOAD CSV WITH HEADERS FROM "....csv" AS file
MERGE (b:Business {ID: file.Business_ID) 
WITH file,b
MERGE (p:Person {Name: file.Owned_by,Gender: file.Gender}) 
WITH file,b,p
MERGE (b)-[:owned_by] ->(p) 

但请注意,一个企业也可能归另一个企业所有(s/n 3),并且企业和个人包含不同的属性(Business_ID 和性别)。使用上面的语法,我会得到 s/n 2 和 3 的两个不同的关系:

(Taurus Pte Ltd)-[:owned_by]->(Daenerys)

(gemini Pte Ltd)-[:owned_by]->(Taurus Pte Ltd)

但我想要的是显示整个所有权链的单一关系:

(Taurus Pte Ltd)-[:owned_by]->(gemini Pte Ltd)-[:owned_by] ->(Daenerys)

我应该怎么做?

解决方法

我将为个人和企业推出一个全球标签...

LOAD CSV WITH HEADERS FROM "....csv" AS file
MERGE (b:Entity {ID: file.Business_ID) 
WITH file,b
MERGE (p:Entity {Gender: file.Gender) 
WITH file,b,p
MERGE (b)-[:owned_by] ->(p)

我真的不知道你为什么使用 Gender,可能是一个错字,但无论如何......在第一次导入时使用全局节点标签,如 :Entity 来获取所有权关系。在后续导入中,您可以添加辅助:如果需要,可以为节点添加人员或企业标签。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。