我已经使用批量导入器在 neo4j 图形数据库中加载了一些数据。现在让我们说,如果我必须加载更多数据,那么我是否必须跟踪外部插入的内容,或者 Neo4j 的标准功能可用于:
1)获取插入的最后一个节点的ID,以便我知道需要插入的新节点的ID并相应地索引。
2)获取数据库中已经存在的节点列表,以便我可以检查将要插入的节点的唯一性。如果数据库中已经存在一个节点,我将只使用相同的 id 而不会创建新节点。
3) 检查三元组的唯一性 - 假设 neo4j 数据库中已经存在一个三元组“January Month is_a”,假设我要插入的新数据也有相同的三元组,我不想插入它,因为它会给我重复的结果。
例如:如果您使用批处理导入器在 neo4j 图形数据库中添加以下数据:https ://github.com/jexp/batch-import
$ cat nodes.csv
name age works_on
Michael 37 neo4j
Selina 14
Rana 6
Selma 4
$ cat nodes_index.csv
0 name age works_on
1 Michael 37 neo4j
2 Selina 14
3 Rana 6
4 Selma 4
$ cat rels.csv
start end type since counter:int
1 2 FATHER_OF 1998-07-10 1
1 3 FATHER_OF 2007-09-15 2
1 4 FATHER_OF 2008-05-03 3
3 4 SISTER_OF 2008-05-03 5
2 3 SISTER_OF 2007-09-15 7
现在,如果您必须向同一个数据库添加更多数据,那么您需要了解以下内容:
1)如果节点已经存在,那么它们的 id 是什么,以便您可以在创建三元组时使用它们,如果没有,则创建此类节点的列表(不在数据库中),然后从上次导入中未使用的 id 开始并将其用作创建新 nodes_index.csv 的起始 id
2)如果数据库中已经存在三元组,则不要再次创建该三元组,因为在对数据库运行密码查询时会导致重复结果。
似乎这里也提出了同样的问题:https ://github.com/jexp/batch-import/issues/27
谢谢!