2017-08-27 4 views
1

LOAD CSVを使用せずにSQL ServerからNeo4jにデータを移行する方法は?SQL ServerデータをNeo4jに移行し、両方のデータベースのデータを同期させたままにする

他のツールでは、スキーマごとに完全な変換を行うのではなく、単なるサンプル(例:ETL)です。ノードjsアプリケーションでできることがあれば、それは素晴らしいでしょう。

また、SQL ServerとNeo4j間でデータを同期させておく方法はありますか?

+0

apoc.load.jdbcはあなたの友人です...チェックアウトしてください –

答えて

0

ここにいくつかのオプションがあります:apoc.load.jdbcが1つのオプションで、neo4j-etl-componentsプロジェクトもあります。

apoc.load.jdbc

リレーショナルデータベースに接続し、APOC procedure libraryで利用可能なサイファー内からのNeo4jにSQLクエリの結果をストリーミングするための機能があります。

例えば:

// Create Product nodes 
CALL apoc.load.jdbc("jdbc:mysql://localhost:3306/northwind?user=root","SELECT * FROM products") YIELD row 
CREATE (p:Product {ProductID: row.ProductID}) 
SET p.ProductName = row.ProductName, 
    p.CategoryID = row.CategoryID, 
    p.SupplierID = row.SupplierID 

詳細情報

neo4j-etl-components

  1. を検査しますツールであるdocs.

    のNeo4j-ETLコンポーネントで利用可能です既存のリレーショナルデータベーススキーマ

  2. 、プロパティグラフモデル
  3. 随意に変換するには、このスキーマにルールを適用する(この変換は新しいのNeo4jデータベースを作成するために、リレーショナルデータベースから
  4. ストリームエクスポートを適用する方法を編集するためのGUIインタフェースを提供オフラインバッチ)またはオンラインインクリメンタルインサートをNeo4jに挿入できます。

neo4j-etl-componentsをコマンドラインツールとして使用できます。たとえば、最初のバッチインポートを実行します

~: $NEO4J_HOME/bin/neo4j-etl export \ 
    --rdbms:url jdbc:oracle:thin:@localhost:49161:XE \ 
    --rdbms:user northwind --rdbms :password northwind \ 
    --rdbms:schema northwind \ 
    --using bulk:neo4j-import \ 
    --import-tool $NEO4J_HOME/bin \ 
    --csv-directory /tmp/northwind \ 
    --options-file /tmp/northwind/options.json \ 
    --quote '"' --force 

はあなたの最初のインポートを完了したら同期

を維持するプロジェクトhere.

のためのドキュメントhereとGithubのページを参照してください。もちろん、データを同期させておく必要があります。 1つの選択肢は、アプリケーション層でこれを処理し、両方のデータベースへの書き込みを担当するワーカーをキューに書き込むか、またはインポートのインクリメンタルバージョンをapoc.load.jdbcまたはneo4j-etl-componentsで実行することです。

関連する問題