如何解决Neo4j:来自一个 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 举报,一经查实,本站将立刻删除。