【发布时间】:2018-07-10 13:32:59
【问题描述】:
我已经有一些 Neo4j 中的数据,数据以以下方式建模:
:A {ID:"123",Group:"ABC",Family:"XYZ"}
:B {ID:"456",Group:"ABC",Family:"XYZ"})
(:A)-[:SCORE{score:'2'}]-(:B)
现在, 我正在通过包含 5 列的 CSV 文件导入一些新数据
- A 的 ID
- 乙的身份证
- A 连接到 B 的分数
- 组
- 家庭
在新的数据中可以有一些新的A Ids或一些新的B Ids
问题:
- 我想创建 A 和 B 类型的新节点并创建关系“分数”并将分数分配为它们之间关系类型“分数”的值
- A 和 B 之间已经存在的分数可能已经改变。所以我只想用新的分数更新以前的分数。
如何编写 cypher 以使用 CSV 作为导入来解决上述问题。
我第一次使用以下密码查询来建模数据:
using periodic commit LOAD CSV WITH HEADERS FROM "file:///ABC.csv" as line Merge(a:A{ID: line.A,Group:line.Group,Family:line.Family})
Merge(b:B{ID: line.A,Group:line.Group,Family:line.Family})
Merge(a)-[:Score{score:toFloat(line.Score)}]-(b)
注意:对于两种类型的节点“A”和“B”,Family 和 Group 是相同的
提前致谢。
【问题讨论】: