我已经使用批量导入器在neo4j图形数据库中加载了一些数据。现在让我们说,如果我必须加载更多的数据,那么我需要跟踪外部插入的内容,还是可以使用neo4j的标准功能:neo4j中的多个负载
1)获取插入的最后一个节点的ID我知道需要插入和索引的新节点的ID。
2)获取已存在于数据库中的节点列表,以便我可以检查将要插入的节点的唯一性。如果一个节点已经存在于数据库中,我将只使用相同的id并且不会创建一个新的节点。
3)检查三联体的唯一性 - 假设一个三联体“January Month is_a”已经存在于neo4j数据库中,并且让我们说我想插入的新数据也有相同的三联体,我不想插入它因为它会给我重复的结果。
例如:如果您添加以下使用批量进口国的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
2)如果数据库中的三元组已存在,则不要再次创建该三元组,因为在对数据库运行密码查询时会导致重复结果。
好像同样的问题已经在这里提出,以及:https://github.com/jexp/batch-import/issues/27
谢谢!