5

MySQL データベースを neo4j データベースに置き換えることを検討しています。私は neo4j の完全な初心者であり、現在の MySQL データを neo4j データベースにバッチ挿入する方法を知りたいので、実験して neo4j について学び始めることができます。

リレーショナル データベースは、 、 、 、 の 4 つのテーブルで構成PersonOrganismStoryますLinks。リンクは、他の 3 つのテーブルの行間の関係を示しています。

Links: ID、FromTable、FromID、ToTable、ToID、LinkType

Person: ID、property_2、property_1 など ...

Organism: ID、property_A、property_B など ....

Story: ID、property_x、property_y

各 ID フィールドは、テーブルごとに 1 から始まる自動インクリメント整数です

明確でない場合、たとえば ID 3 の人物と ID 42 のストーリーの間のリンクには、リンク テーブル ID=autoincrement、FromTable=Person、FromID=3、ToTable=Story、ToID=42 の行があります。「から」と「へ」という用語を使用していますが、実際のリンクは実際には「誘導」されているわけではありません。

Michael Hunger のバッチ インポートを見てきましたが、ノードの単一のテーブルと関係の 1 つのテーブルでのみ機能するようですが、3 つの異なるタイプのノードとそれらの間の関係の 1 つのリストをインポートしようとしています。

私はneo4jを稼働させています。私を始めるためのアドバイスは大歓迎です。

Python と bash シェル スクリプトは使用していますが、Java には詳しくありません。最初のインポート後、Javascript で RESTful インターフェイスを使用します。

4

2 に答える 2

9

gitリポジトリのアドバイスに基づいています。Michael Hungerのバッチインポートを使用すると、1つの.csvファイルから複数のノードタイプをインポートできます。マイケルを引用するには:

それらすべてを1つのノードファイルに入れるだけで、特定の行に値を持たない属性を含めることができ、スキップされます。

したがって、私が使用した一般的なアプローチは次のとおりです。

すべてのノードテーブルを次の名前の新しいテーブルに結合しますnodes

  1. nodes自動インクリメントnewIDフィールドとフィールドを使用して新しいテーブルを作成しますtype。タイプフィールドには、ノードデータがどのテーブルから取得されたかが記録されます
  2. nullを許可する3つのノードテーブルから可能なすべての列名を追加します。
  3. INSERT INTO nodesフィールドを人、生物、またはストーリーに設定することPersonに加えて、、、、、Organismの値。関係のないフィールドは空白のままにします。Storytype

別の新しいテーブルで、SQLに基づいてrels新しく作成されたnewIDインデックスをテーブルに追加します。LinksJOIN

INSERT INTO rels
SELECT  
    n1.newID AS fromNodeID, 
    n2.newID AS toNodeID,
    L.LinkType,
    L.ID
FROM 
    Links L
LEFT JOIN 
    nodes n1 
    ON 
    L.fromID = n1.ID 
    AND 
    L.fromType = n1.type
LEFT JOIN 
    nodes n2 
    ON 
    L.toID = n2.ID 
    AND 
    L.toType = n2.type;

次に、これら2つの新しいテーブルnodesrelsタブで区切った.csvファイルとしてエクスポートし、batch-importで使用します。

$java -server -Xmx4G -jar target/batch-import-jar-with-dependencies.jar target/graph.db nodes.csv rels.csv
于 2012-09-20T13:09:08.690 に答える
1

Pythonとシェルスクリプトを使用して満足していると言うように、特にpy2neogeoffに付属しているコマンドラインツールも確認することをお勧めします。これは、グラフデータを保持するために私がまとめたフラットファイル形式を使用するため、インスタンスでは、ソースデータからフラットファイルを作成し、これをグラフデータベースに挿入する必要があります。

ファイル形式とサーバープラグインはここに記載されており、クライアントアプリケーションのpy2neoモジュールはここにあります。

ドキュメントに不足しているものがある場合、またはこれに関する詳細情報が必要な場合は、遠慮なく私にメールを送ってください

ナイジェル

于 2012-09-21T06:28:36.030 に答える