Ich habe einige Daten, die in 2 CSV-Dateien ist, enthält die Eckpunkte und die andere Datei enthält die Kanten sind in der anderen Datei. Ich arbeite daran, wie ich das mit ETL einrichten kann und bin nahe, aber noch nicht ganz da - es funktioniert meistens, aber meine Kanten haben Eigenschaften und ich bin mir nicht sicher, ob sie richtig geladen werden. This question war hilfreich, aber mir fehlt noch etwas ...OrientDB ETL laden CSV mit Vertices in einer Datei und Kanten in einem anderen
Hier ist meine Daten:
vertices.csv:
label,data,date
v01,0.1234,2015-01-01
v02,0.5678,2015-01-02
v03,0.9012,2015-01-03
edges.csv:
u,v,weight,date
v01,v02,12.4,2015-06-17
v02,v03,17.9,2015-09-14
Ich importiere meine Scheitelpunkte mit dieser:
commonVertices.json:
{
"begin": [
{ "let": { "name": "$filePath",
"expression": "$fileDirectory.append($fileName)"
}
},
],
"config": { "log": "info"},
"source": { "file": { "path": "$filePath" } },
"extractor": { "csv": { "ignoreEmptyLines": true,
"nullValue": "N/A",
"dateFormat": "yyyy-mm-dd"
}
},
"transformers": [
{ "vertex": { "class": "myVertex" } },
{ "code": { "language": "Javascript",
"code": "print(' Current record: ' + record); record;" }
}
],
"loader": { "orientdb": {
"dbURL": "plocal:my_orientdb",
"dbType": "graph",
"batchCommit": 1000,
"classes": [ { "name": "myVertex", "extends", "V" },
],
"indexes": []
}
}
}
vertices.json:
{ "config": { "log": "info",
"fileDirectory": "./",
"fileName": "vertices.csv"
}
}
commonEdges.json:
{
"begin": [
{ "let": { "name": "$filePath",
"expression": "$fileDirectory.append($fileName)"
}
},
],
"config": { "log": "info"
},
"source": { "file": { "path": "$filePath" } },
"extractor": { "csv": { "ignoreEmptyLines": true,
"nullValue": "N/A",
"dateFormat": "yyyy-mm-dd"
}
},
"transformers": [
{ "merge": { "joinFieldName": "u", "lookup": "myVertex.label" } },
{ "edge": { "class": "myEdge",
"joinFieldName": "v",
"lookup": "myVertex.label",
"direction": "out",
"unresolvedLinkAction": "NOTHING"
}
},
{ "field": { "fieldNames": ["u", "v"], "operation": "remove" } }
],
"loader": {
"orientdb": {
"dbURL": "plocal:my_orientdb",
"dbType": "graph",
"batchCommit": 1000,
"useLightweightEdges": false,
"classes": [
{ "name": "myEdge", "extends", "E" }
],
"indexes": []
}
}
}
edges.json:
{
"config": {
"log": "info",
"fileDirectory": "./",
"fileName": "edges.csv"
}
}
ich es mit oetl.sh wie dies leite:
$ oetl.sh vertices.json commonVertices.json
$ oetl.sh edges.json commonEdges.json
Alles läuft, aber wenn ich die Kanten abfragen ... Ich bin zu Orientdb neu, es so vielleicht ist bekommen die Eigenschaften in meine Kanten, aber wenn ich die Kanten abfragen ich das Gewicht und das Datum nicht Felder sehen:
orientdb {db=my_orientdb}> SELECT FROM myEdge
+----+-----+------+-----+-----+
|# |@RID |@CLASS|out |in |
+----+-----+------+-----+-----+
|0 |#33:0|myEdge|#25:0|#26:0|
|1 |#34:0|myEdge|#26:0|#27:0|
+----+-----+------+-----+-----+
die Vertex-Tabelle enthält die [weight] Feld von meinem edges.csv und dem [Datum] Feld wird geplätschert ich auf eine seltsame Art und Weise. Der Tag des Monats wird immer auf den Tag der edge.csv Datei überschrieben, was unerwünscht ist, aber es ist mir seltsam, dass der Monat selbst nicht auch ändern bekommen:
orientdb {db=my_orientdb}> SELECT FROM myVertex
+----+-----+--------+------+-------------------+-----+------+----------+---------+
|# |@RID |@CLASS |data |date |label|weight|out_myEdge|in_myEdge|
+----+-----+--------+------+-------------------+-----+------+----------+---------+
|0 |#25:0|myVertex|0.1234|2015-01-17 00:06:00|v01 |12.4 |[#33:0] | |
|1 |#26:0|myVertex|0.5678|2015-01-14 00:09:00|v02 |17.9 |[#34:0] |[#33:0] |
|2 |#27:0|myVertex|0.9012|2015-01-03 00:01:00|v03 | | |[#34:0] |
+----+-----+--------+------+-------------------+-----+------+----------+---------+
Ich bin sicher, dass es wahrscheinlich eine einfache Optimierung, jede Hilfe wäre großartig!
Danke, das hat eines der zwei Probleme gelöst, die ich auf diesem einen habe. – TxAG98
Ich habe ein Follow-up dazu in [eine andere Frage] (http://stackoverflow.com/questions/38702959/edge-properties-clobbering-vertex-properties-in-orientdb-from-etl) speziell für das Datumsfeld veröffentlicht Probleme ... – TxAG98