neo4j - Neo4j:一个 CSV 列中的多个可能节点
问题描述
我有一个企业和企业主的 CSV 文件,看起来像这样:
信噪比 | 商业 | 业务_ID | 拥有者 | 性别 |
---|---|---|---|---|
1 | 白羊座私人有限公司 | 12345 | 占士邦 | 男性 |
2 | 金牛座私人有限公司 | 23456 | 丹妮莉丝 | 女性 |
3 | 双子座私人有限公司 | 34567 | 金牛座私人有限公司 | 不适用 |
我想创建一个以企业为节点、所有者为节点以及企业与所有者之间的关系的图表。对于 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]->(丹妮莉丝)
(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 来获取所有权关系。在后续导入中,您可以添加辅助 :Person 或 Business如果需要,标记到节点。
推荐阅读
- .net - 使用 CookieAuthenticationProvider OnValidateIdentity 在 validateInterval 之后始终删除身份验证 cookie
- c# - 使用 DinkToPdf 在 asp.net 核心中将 HTML 转换为 PDF 在 Ubuntu 中不起作用
- php - PHP从Mysql数据库创建变量列表
- c# - 为批处理文件语法高亮创建正则表达式模式的问题
- c# - 如何在 .NET 中调用异步函数而不等待它
- css - 使用 checkout.js 隐藏 PayPal 按钮
- android - 尝试在 Android Studio 中添加 Crashlytics(找不到方法...)
- python - 合并numpy数组的拆分部分时出错
- python - 如何使用 tf.placeholder 输入 tf.unstack 的参数?
- scala - Shapeless - 通用 Repr 类型操作