Neo4jでデータベースを削除/作成する方法は?


104

MySQLのようにグラフデータベースNeo4jで異なるデータベースを作成/削除することは可能ですか?または、少なくとも、既存のグラフのすべてのノードと関係を削除して、テスト用のクリーンなセットアップを取得するrmrel方法rm

回答:


98

rm -rfNeo4jはそれ以外に何も保存していないため、でグラフディレクトリ全体を削除できます。

rm -rf data/*

また、もちろん、すべてのノードを反復処理して、それらの関係とノード自体を削除することもできますが、テストだけではコストがかかりすぎる可能性があります...


7
また、すべてのノードを反復処理する場合は、参照ノードをそのままにしておくことをお勧めします。
nawroth

6
グラフディレクトリはどこにありますか?
Pramod

3
@Pramodは、neo4jディレクトリのデータディレクトリにあります。お見逃しなく
devshorts 2013

7
Mac OSXでhomebrewを使用する場合:/usr/local/Cellar/neo4j/community-1.9.2-unix/libexec/data
Ashley

5
このコマンドを実行する前に、neo4jサーバーを停止することをお勧めします。
John Bachir、2015年

98

すべてのノードと関係を削除するさらに簡単なコマンド:

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

11
ステートメントの+1。ただし、すべてのノードを削除したからといって、使用したラベルが完全に忘れられているわけではないことに注意してください。ブラウザには引き続きすべてのラベルが表示されます。ノードのプロパティと関係ラベルの同上。
Dilum Ranatunga 2014

@DilumRanatunga 1.ネオにラベルを忘れさせる方法を知っていますか?2.ノードが削除された場合、またはリレーションシップのリレーションシップラベルが削除された場合、ノードプロパティはどのように保持されますか?
John Bachir、2014年

1
実際の値ではありません。プロパティ自体の名前を意味します。
Dilum Ranatunga 2014

5
ノードとエッジだけでなく、DBにもインデックスが存在する可能性があり、それらを取り除くのはより困難です。また、削除を含む大規模な繰り返しテストによってDBインスタンスを台無しにしただけで、DBファイルを物理的に削除し、Neo4Jが再起動時にそれらを再作成すると、明らかにパフォーマンスが向上します。
フロー14

Dockerコンテナのneo4jでメモリ不足になりました。
bolec_kolec 2017

52

Neo4j 2.3から、

関係のあるすべてのノードを削除できます。

MATCH (n)
DETACH DELETE n

現在、Noe4jに複数のデータベースを作成するオプションはありません。Neo4jデータの複数のストアを作成する必要があります。リファレンスを参照してください


3
ファイルシステムに頼らない場合は、最良の回答です。
ThomasH 2017

この方法の問題は、制約もインデックスも削除されないことです
Davide

47

Neo4jでの新しいデータベースの作成

neo4jコミュニティを開始する前に、参照オプションをクリックします

ここに画像の説明を入力してください

別のディレクトリを選択します

ここに画像の説明を入力してください

ここに画像の説明を入力してください

スタートボタンをクリックします。

ここに画像の説明を入力してください

そのディレクトリに作成された新しいデータベース


12

うまく機能する迅速で汚れた方法:

bin/neo4j stop
rm -rf data/
mkdir data
bin/neo4j start

11

テストスイートを実行するためにクリーンなグラフを必要とする他の誰にとっても-https ://github.com/jexp/neo4j-clean-remote-db-addonは、REST呼び出しを介してdbをクリアできる優れた拡張機能です。もちろん、本番環境では使用しないでください。


ノード0が削除されたようです。どうすれば再作成できますか?
ウィル

1
実際には、参照ノード(github.com/jexp/neo4j-clean-remote-db-addon/blob/master/src/…)をスキップします。しかし、参照ノードがなくなった場合(必要な場合)、setRefenceNode()まだ呼び出しがないため(stackoverflow.com/questions/7186832/…)、クリーンなデータディレクトリから開始する必要があります。
Matt Luongo

7

別のneo4jインスタンスでテストコードを実行します。

  1. neo4jディレクトリを新しい場所にコピーします。これをテストに使用します。新しいディレクトリに移動します。
  2. テストを実行し、通常どおり同時に使用できるようにポートを変更します。開いているポートを変更して未使用のポートにconf/neo4j-server.properties設定org.neo4j.server.webserver.portします。
  3. セットアップ時にテストサーバーを起動します。やる./neo4j stoprm -rf data/graph.dbティアダウンに。

詳細については、neo4j:データベースを切り替える方法を参照してくださいドキュメント


6

Neo4j 2.0.0では?はサポートされなくなりました。代わりにOPTIONAL MATCHを使用してください:

START n=node(*)
OPTIONAL MATCH (n)-[r]-()
delete n,r;

6

最も簡単な答えは次のとおりです:いいえ

「最初からやり直す」最良の方法は

  • 別の空のデータフォルダに移動する

または

  • Neo4jを完全に閉じる
  • 古いデータフォルダーを空にする
  • Neo4jを再起動し、空のフォルダーをデータフォルダーとして設定します

すべてのノードと関係を削除する方法があります(ここで説明されています

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

1

2.0.0 -M6では、次のCypherスクリプトを実行して、すべてのノードと関係を削除できます。

start n=node(*)
match (n)-[r?]-()
delete n,r

2
残念ながら、これは最新の2.0.0リリースでエラーを生成します:SyntaxException:疑問符はオプションのパターンに使用されなくなりました-代わりにOPTIONAL MATCHを使用してください(行1、列26)==> "start n = node(*)match(n )-[r?]-()delete n、r "
richj 2014年

答えははっきりと言うので、私は、downvotesを理解していない2.0.0 -M6で、私は質問に答えたときに、最新バージョンのだったため、他の提供正解ながら、現在、最新のビルド。
マーティン・シーラー、2014

1

バージョン3の時点で、個別のデータベースインスタンスを作成できるようになったため、それらの場所が少し異なります。

参照先:https : //neo4j.com/developer/guide-import-csv/

--into retail.dbは明らかにターゲットデータベースであり、既存のデータベースを含めることはできません。

私のUbuntuボックスの場所は次のとおりです。

/var/lib/neo4j/data/databases現在graph.db、デフォルトである必要があると思われるものだけが表示されます。


0

データファイルを削除できます。この方法を使用する場合は、たとえばgraph.dbだけを削除することをお勧めします。そうしないと、認証情報がごちゃごちゃになります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.