我有一个简单的 csv,有 4 行,如下所示:
+------------+-------------+------------+-------------+
| ID | Name | FatherID | MotherID |
+------------+-------------+------------+-------------+
| 1 | Mom Doe | | |
| 2 | Dad Doe | | |
| 3 | Big Sis | 2 | 1 |
| 4 | Lil Bro | 2 | 1 |
+------------+-------------+------------+-------------+
我正在尝试制作一个家谱,如下所示:
这里的诀窍是我必须仅基于两件事来创建这些关系:theFatherID
和MotherID
. 这是可行的。但它需要以某种有条件的方式应用关系。
这是我尝试过的,但没有奏效:
LOAD CSV WITH HEADERS FROM
'file:///Users/.../import_for_Neo4j.csv' AS line
WITH line
CREATE (person:Person {id:line.ID})
SET person.Name=line.Name,
person.MotherID=line.MotherID,
person.FatherID=line.FatherID
WITH person
CREATE (a:Person {Name:'Mom Doe'})-[:SPOUSE]->(b:Person {Name:'Dad Doe'})
RETURN a
但后来我意识到,即使这确实有效,又有什么意义呢?我必须手动输入每个家庭成员的名字,这会否定加载 csv 的全部意义。如果是这样的话,我还不如在 Sublime 中手动输入所有内容而跳过阅读 csv。
我的一个想法是让任何拥有 NULLFatherID
并且MotherID
有亲属关系的人成为 SPOUSE,但如果家谱有祖父母,那就行不通了。
一个解决方案似乎真的很棘手——也许首先创建所有节点并创建SIBLING
关系。然后遍历 csv 并产生CHILD
关系?
有什么方法可以让我通常吞下一个 csv 并创建这个简单的图表?
感谢您阅读本文。