2016-03-23 10 views
0

Wie kann ich einige JSON-Dateien in OrientDB importieren, um es wie Dokumenttyp (nicht Grafik) zu verwenden?Importieren von JSON in OrientDB-Dokument mit ETL

ist Meine Daten so etwas wie dieses:

{ 
    "p_partkey": 1, 
    "p_name": "lace spring", 
    "lineorder": [{ 
     "customer": [{ 
      "c_name": "Customer#000014704" 
     }], 
     "lo_quantity": 49, 
     "lo_orderpriority": "1-URGENT", 
     "lo_discount": 3, 
     "lo_shipmode": "RAIL|", 
     "lo_tax": 0 
    }, { 
     "customer": [{ 
      "c_name": "Customer#000026548" 
     }], 
     "lo_quantity": 15, 
     "lo_orderpriority": "3-MEDIUM", 
     "lo_discount": 10, 
     "lo_shipmode": "SHIP|", 
     "lo_tax": 0 
    }] 
} 

und ich schaffen, unter zu importieren ein configfile.json wie, aber es nicht funktionieren:

{ 
    "config": { 
    "log": "debug" 
    }, 
    "source" : { 
    "file": { "path": "/home/raphael/Documents/data/part/part1.json", "lock" : true } 
    }, 
    "extractor" : { 
    "json": {} 
    }, 
    "transformers" : [ 
    { "merge": { "joinFieldName":"p_partkey"} }, 
    { "vertex": { "class": "part"} } 
    ], 
    "loader" : { 
    "orientdb": { 
     "dbURL": "plocal:/opt/orientdb/databases/part", 
     "dbUser": "root", 
     "dbPassword": "rasns1901", 
     "dbAutoCreate": true, 
     "tx": false, 
     "batchCommit": 1000, 
     "dbType": "document", 
     "classes": [ 
     {"name": "part", "extends": "V"} 
     ],  
     "indexes": [ 
     {"class":"part", "fields":["p_partkey:integer"], "type":"UNIQUE_HASH_INDEX" } 
     ] 
    } 
    } 
} 

Es ist etwas falsch mit meiner configfile? Es gibt kein Beispiel für OrientDB-Dokumente.

+0

Hallo, ist der Daten-JSON, den du gepostet hast, vollständig? Ich versuche, Ihre Situation zu reproduzieren, aber es scheint, dass es etwas fehlt. –

+0

@IvanMaineti Dieses Beispiel war ein ungültiger JSON, ich habe es auf dem Post korrigiert. Aber meine Daten sind korrekt. Vielen Dank. – Raphael

+0

@Raphael, die json-Konfiguration bezieht sich auf "p_partkey", während in den Beispieldaten dieses Feld überhaupt nicht vorhanden ist. –

Antwort

0

Ich habe aufgegeben mit der ETL und tat es mit Python, es war einfacher.

geht hier mein Code:

from __future__ import division 
import csv 
import sys 
import collections 
import pyorient 

def Inicio(): 


    db_name = "db" 
    client = pyorient.OrientDB("127.0.0.1", 2424) 
    session_id = client.connect("admin", "admin") 
    client.db_open(db_name, "admin", "admin") 
    i=1 
    while i<3: 
     file= open('home/Desktop/part'+str(i)+'.json','rd') 
     texto = file.readline() 
     co = 'INSERT INTO part CONTENT '+texto 
     client.command(co) 
     print("Inserted:"+str(i)) 
     file.close() 
     i=i+1 
    client.db_close() 

Inicio() 

Das einzige, was Sie atention zu zahlen haben, ist, dass meine JSON-Datei nicht Zeilenumbrüche haben, so dass die Readline-() Funktion funktioniert.