2016-10-26 4 views
1

私は3つのCSVファイルを持っています.1つはノードA、もう1つはノードB、もう1つはエッジA_to_Bです。OrientDBでJSONを使用してCSVをインポートするには、あるテーブルのIDと別のテーブルのIDを使用しますか?

ノードをOrientDBにインポートするだけでも問題ありません。それは私が問題を抱えているエッジです。

ノードAのCSVファイルが含まれている(idは整数インデックスである):

id, value 
0, a 
1, b 
2, c 
3, d 
... 

ノードBのCSVファイルが含まれている(idは整数インデックスである):CSVに含ま

id, Category 
10, cat_x 
11, cat_y 
12, cat_z 

edge_a_b:

a_id, Category 
0, cat_x 
1, cat_z 
2, cat_z 
... 

"a"と "b"の2つをデータベースに正しく取得できます。しかし、私がこのETL jsonを実行すると...

{ 
    "source": { "file": { "path": "/mypath/edge_a_b.csv" } }, 
    "extractor": { "csv": {} }, 
    "transformers": [ 
    { "vertex": { "class": "b", "skipDuplicates": true } }, 
    { "edge": { "class": "Involves", "joinFieldName": "a_id", "lookup": "a.id", "direction": "in" } } 
    ], 
    "loader": { 
    "orientdb": { 
     "dbURL": "plocal:../databases/mydb", 
     "dbType": "graph", 
     "classes": [ 
     {"name": "a", "extends": "V"}, 
     {"name": "b", "extends": "V"}, 
     {"name": "Involves", "extends": "E"} 
     ], "indexes": [ 
     {"class":"a", "fields":["id:integer"], "type":"UNIQUE" }, 
     {"class":"b", "fields":["id:integer"], "type":"UNIQUE" } 
     ] 
    } 
    } 
} 

私はマッチすると予想している215の頂点のうちの1つだけを取得します。

| => ./oetl.sh /mypath/edge_a_b.json 

OrientDB etl v.2.2.11 (build [email protected]; 2016-10-03 09:39:41+0000) www.orientdb.com 
BEGIN ETL PROCESSOR 
[file] INFO Reading from file /mypath/edge_a_b.csv with encoding UTF-8 
Started execution with 1 worker threads 
[orientdb] INFO committing 
END ETL PROCESSOR 
+ extracted 215 rows (0 rows/sec) - 215 rows -> loaded 1 vertices (0 vertices/sec) Total time: 172ms [0 warnings, 0 errors] 

ノードが作成されています。それは私が作成することが困難であると思っているエッジです。私は様々なアプローチを試みました。

+1

こんにちは、これを見ましたか? http://orientdb.com/docs/2.2/Import-from-CSV-to-a-Graph.html。 –

+0

@ Michela-Bonizziこんにちは。はい。私のシナリオとあなたが参照したシナリオの違いはいくつかあります。主なものは、BノードCSVに固有の索引要素が含まれ、辺が別々のファイルにあるというCSVです。私は理論的には、私のCSVファイルを操作して、それがこの例と一致するようにすることはできますが、私はそれを避けようとしています。 – user2962397

答えて

2

あなたは

"extractor": {"row": {}}, 
    "transformers": [{ 
      "csv": { 
       "separator": "," 
      } 
     }, 
     { 
     "command" : { 
       "command" : "create edge Involves from (select from a where id= ${input.a_id}) to (select from b where Category= '${input.Category}')", 
       "output" : "edge" 
      } 
     } 
     ], 

はそれが役に立てば幸い使用することができます。

関連する問題