2016-10-21 6 views
0

私は2つの異なるNeo4jサーバを実行しており、同じ順序で同じクエリを実行しています。neo4j-shellのダンプのノードカウンタをリセットする

両方のデータベースが同等であるかどうかをチェックしたいのですが、データベース全体のダンプを生成しています(これは巨大なデータベースの実際の代替ではありません)。bin/neo4j-shell -c "dump" > /home/my_user/dump.txtとmd5ハッシュmd5sum dump.txtで生成されます。

生成されたdump.txtファイルは、ノードを識別する変数が異なる場合があることを除いて、ほとんど同じです。もちろん、各ファイルに対して完全に異なるハッシュが生成されます。例:

をdump.txt#1

私は今、それがデータベースがこれまで持っていたノードの数に基づいた作品を推測している#2

begin 
commit 
begin 
create (_7:`Person` {`name`:"Arthur", `title`:"King"}) 
create (_8:`Person` {`name`:"Saladin", `title`:"Sultan"}) 
create (_9:`Army` {`name`:"Saxon army"}) 
create (_7)-[:`FIGHTS_AGAINST`]->(_9) 
create (_8)-[:`LEADS`]->(_9) 
; 
commit 

をdump.txt

begin 
commit 
begin 
create (_6:`Person` {`name`:"Arthur", `title`:"King"}) 
create (_7:`Person` {`name`:"Saladin", `title`:"Sultan"}) 
create (_8:`Army` {`name`:"Saxon army"}) 
create (_6)-[:`FIGHTS_AGAINST`]->(_8) 
create (_7)-[:`LEADS`]->(_8) 
; 
commit 

MATCH (n) DETACH DELETE nでクリーニングすると、このカウンタはリセットされません。私がそれをリセットするために見つけた唯一の方法は、正確に実用的ではないサーバーを再起動することです。

私の問題を解決する最も簡単な方法は、_が前に付いている数字をすべて消去するスクリプトを作成することですが、非常に特殊な状況では誤検出を生成しないでしょうか?照会が非常に似ていて同じ順序であるが、異なるノードを更新した場合のように。

もっと良い選択肢がありますか?おそらく、このノードカウンタをリセットするコマンドですか?

答えて

0

Bashで正規表現を使用して、ファイルからすべてのノード識別子を削除したいという目的を達成しました。

begin 
commit 
begin 
create (_18:`Person` {`name`:"Arthur", `title`:"King"}) 
create (_19:`Person` {`name`:"Saladin", `title`:"Sultan"}) 
create (_20:`Army` {`name`:"Saxon army"}) 
create (_18)-[:`FIGHTS_AGAINST`]->(_20) 
create (_19)-[:`LEADS`]->(_20) 
; 
commit 

は、このようなdump_new.txtを生成します:

begin 
commit 
begin 
create (:`Person` {`name`:"Arthur", `title`:"King"}) 
create (:`Person` {`name`:"Saladin", `title`:"Sultan"}) 
create (:`Army` {`name`:"Saxon army"}) 
create()-[:`FIGHTS_AGAINST`]->() 
create()-[:`LEADS`]->() 
; 
commit 
このような dump.txtから

cat dump.txt | sed s/\(_[0-9]*/\(/g > dump_new.txt

関連する問題