2016-04-18 14 views
0

私はNeo4jデータベースに移行しようとしているリモートサーバにmysqlデータベースを持っています。このために、個々のテーブルをCSVファイルにダンプし、LOAD CSV機能を使用してテーブルからグラフを作成する予定です。MYSQLデータベースをNeO4jにインポート

各テーブルの読み込みはどのようにしてテーブル間の関係を保持しますか? つまり、単一のテーブルだけでなく、データベース全体のグラフを生成するにはどうすればよいですか?

+0

NorthwindデータセットをNeo4jにインポートする方法の例については、[このページ](http://neo4j.com/developer/guide-importing-data-and-etl/#_northwind_introduction)を参照してください。 –

答えて

0
  1. CSV
  2. として各テーブルを使用MERGE
  3. テーブル間の関連レコードを見つけるためにあなたの関係フィールド上のインデックス(のNeo4jは、単一のプロパティインデックスを行います)
  4. 使用MATCH()を作成してロード(A ) - [:RELATIONSHIP] - >(b)を使ってテーブル間の関係を作成します。

「一度に」実行すると、大規模なトランザクションが作成され、完了には至らず、ヒープエラーが発生してクラッシュする可能性があります。この問題を回避するには、CSVを最初にロードしてから、10K-100Kトランザクションブロックのバッチでリレーションシップを作成する必要があります。関係はありませんLabelBレコード:

MATCH (a:LabelA) 
MATCH (b:LabelB {id: a.id}) WHERE NOT (a)-[:RELATIONSHIP]->(b) 
WITH a, b LIMIT 50000 
MERGE (a)-[:RELATIONSHIP]->(b) 

はこれが何をするか見つけることです。その目標を達成するために

一つの方法は、あるLabelA記録をして、最初の50,000レコードに対するその関係を作成し、それ見つける。これを繰り返し実行すると、最終的にはすべての関係が作成されます。

+0

ありがとうTim、この初期インポート後にデータをどのように同期させておきますか? –

+0

デルタをダンプしたり、完全なダンプを実行したり、dbをリフレッシュしたり、SQL dbを更新するときにグラフdbを更新するようにアプリケーションを変更する必要があります。 –

+0

ありがとうございます –

関連する問題