バッチ インポーターを使用して、neo4j グラフ データベースにいくつかのデータをロードしました。さらに多くのデータをロードする必要がある場合、外部から挿入されたものを追跡する必要があるか、次の目的で使用できる neo4j の標準機能があるとします。
1)最後に挿入されたノードのIDを取得して、挿入する必要がある新しいノードのIDを認識し、それに応じてインデックスを作成します。
2)データベースに既に存在するノードのリストを取得して、挿入されるノードの一意性を確認できるようにします。ノードがデータベースに既に存在する場合、同じ ID を使用するだけで、新しいノードは作成されません。
3) トリプレットの一意性を確認します - トリプレット「January Month is_a」がすでに neo4j データベースに存在し、挿入したい新しいデータにも同じトリプレットがあるとします。結果が重複しています。
例: batch-importer を使用して 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
ありがとう!