2017-06-19 108 views
0

我是Orientdb的新手。 我有一個csv文件,其中包含節點和邊,我需要從該csv文件創建一個圖。 csv文件orientdb加載圖節點和邊緣的csv

"p1","p2","score" 
"LGG_00001","LGG_01682",282 
"LGG_00001",".LGG_01831",183 
"LGG_00001","LGG_01491",238 

邊緣是IsActingWith其中有分數屬性

{ 
"source": { 
    "file": { 
     "path": "C:/Users/sams/Desktop/OrientDB2/lac2.csv" 
    } 
}, 
"extractor": { 
    "csv": {} 
}, 
"transformers": [ 
    { 
     "vertex": { 
      "class": "lac2" 
     } 
    }, 
    { 
     "vertex": { 
      "class": "lac2" 
     } 
    }, 

    { 
     "edge": 
     { 
       "class": "IsActingWith", 
       "joinFieldName": "score_p", 
       "lookup": "acore", 
       "direction": "out" 
     } 
    } 

], 
"loader": { 
    "orientdb": { 
     "dbURL": "plocal:C:/Users/sams/Desktop/OrientDB2/database/proj", 
     "dbType": "graph", 
     "dbAutoCreate": true, 
     "classes": [ 
      { 
       "name": "lac2", 
       "extends": "V" 
      }, 
      { 
       "name": "lac2", 
       "extends": "V" 
      }, 
      { 
       "name": "IsActingWith", 
       "extends": "E" 
      }, 

     ] 

    } 
} 
} 

這就是我試過,但它似乎沒有邏輯給我。 我正在尋找的最終結果是讓一個墓碑由p1->ACTINGWITH-> p2ACTINGWITH分數得分屬性

+0

您正在使用什麼版本?你得到什麼輸出? –

+0

嗨,如果你需要的只是創建一個邊類和一個頂點類,那麼你的代碼已經是正確的,否則,你想要連接單個頂點類屬性還是有兩個不同的頂點類並將它們連接在一起? Thx –

+0

@MichelaBonizzi是的,我需要連接由p1和p2字段組成的2個頂點,並且關係(ACTING WITH)具有屬性 –

回答

1

也許有更好的解決方案,但這個工程。 我的計劃是使用3個不同的etl腳本:第一個和第二個插入頂點,第三個插入頂點。當然,你需要按順序執行它們。

vertex_import_p1.json

{ 
    "source": { "file": { "path": "/home/ivan/Cose/OrientDB/issues/stack/44641116/file.csv" } }, 
    "extractor": { "csv": { 
     "separator": ",", 
    "columns": ["p1:String","p2:String","s:Integer"] } }, 
    "transformers": [ 
     { "command": { "command": "UPDATE lac2 set p='${input.p1}' UPSERT WHERE p='${input.p1}'"} }  
    ], 
    "loader": { 
     "orientdb": { 
      "dbURL": "plocal:/home/ivan/Cose/OrientDB/issues/stack/44641116/db", 
      "dbUser": "admin", 
      "dbPassword": "admin", 
      "dbType": "graph", 
      "classes": [ 
       {"name": "lac2", "extends": "V"}, 
       {"name": "isActingWith", "extends": "E"} 
      ] 
     } 
    } 
} 

vertex_import_p2.json

{ 
    "source": { "file": { "path": "/home/ivan/Cose/OrientDB/issues/stack/44641116/file.csv" } }, 
    "extractor": { "csv": { 
     "separator": ",", 
    "columns": ["p1:String","p2:String","s:Integer"] } }, 
    "transformers": [ 
     { "command": { "command": "UPDATE lac2 set p='${input.p2}' UPSERT WHERE p='${input.p2}'"} }  
    ], 
    "loader": { 
     "orientdb": { 
      "dbURL": "plocal:/home/ivan/Cose/OrientDB/issues/stack/44641116/db", 
      "dbUser": "admin", 
      "dbPassword": "admin", 
      "dbType": "graph", 
      "classes": [ 
       {"name": "lac2", "extends": "V"}, 
       {"name": "isActingWith", "extends": "E"} 
      ] 
     } 
    } 
} 

edge_import_s.json

{ 
    "source": { "file": { "path": "/home/ivan/Cose/OrientDB/issues/stack/44641116/file.csv" } }, 
    "extractor": { "csv": { 
     "separator": ",", 
    "columns": ["p1:String","p2:String","s:Integer"] } }, 
    "transformers": [ 
     { "command": { "command": "CREATE EDGE isActingWith FROM (SELECT FROM lac2 WHERE p='${input.p1}') TO (SELECT FROM lac2 WHERE p='${input.p2}') set score=${input.s}"} } 
    ], 
    "loader": { 
     "orientdb": { 
      "dbURL": "plocal:/home/ivan/Cose/OrientDB/issues/stack/44641116/db", 
      "dbUser": "admin", 
      "dbPassword": "admin", 
      "dbType": "graph", 
      "classes": [ 
       {"name": "lac2", "extends": "V"}, 
       {"name": "isActingWith", "extends": "E"} 
      ] 
     } 
    } 
} 

這裏是執行後的情況:

orientdb {db=db}> select from lac2 

+----+-----+------+---------+-------------------+---------------+ 
|# |@RID |@CLASS|p  |out_isActingWith |in_isActingWith| 
+----+-----+------+---------+-------------------+---------------+ 
|0 |#21:6|lac2 |LGG_00001|[#25:5,#26:1,#27:1]|    | 
|1 |#21:7|lac2 |LGG_01682|     |[#25:5]  | 
|2 |#22:3|lac2 |LGG_01831|     |[#26:1]  | 
|3 |#23:1|lac2 |LGG_01491|     |[#27:1]  | 
+----+-----+------+---------+-------------------+---------------+ 

4 item(s) found. Query executed in 0.003 sec(s). 
orientdb {db=db}> select from isActingWith 

+----+-----+------------+-----+-----+-----+ 
|# |@RID |@CLASS  |score|out |in | 
+----+-----+------------+-----+-----+-----+ 
|0 |#25:5|isActingWith|282 |#21:6|#21:7| 
|1 |#26:1|isActingWith|183 |#21:6|#22:3| 
|2 |#27:1|isActingWith|238 |#21:6|#23:1| 
+----+-----+------------+-----+-----+-----+ 

3 item(s) found. Query executed in 0.004 sec(s). 
+0

所以你說如果我想知道插入的總執行時間,我只需要總和3對 ? –

+0

嗨,是的,我認爲是這樣的 –

+0

我會盡力謝謝你 –

相關問題