2016-03-23 37 views
0

Belge türü (grafik değil) gibi kullanmak için bazı json dosyalarını OrientDB'ye nasıl alabilirim?ETL kullanarak OrientDB türü belgeyi JSON'a Aktar

Benim veriler böyle bir şeydir:

{ 
    "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 
    }] 
} 

ve ben ithalat altında gibi bir configfile.json oluşturmak, ancak dont iş:

{ 
    "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" } 
     ] 
    } 
    } 
} 

benim ConfigFile bir terslik mi var? OrientDB belgelerinde bunun bir örneği yok.

+0

Merhaba, Gönderdiğiniz veri jsonu tamamlandı mı? Durumunuzu yeniden üretmeye çalışıyorum ama bir şey eksik olduğunu ima ediyor. –

+0

@IvanMainetti Bu örnek geçersiz bir json oldu, ben de bu yazıyı düzeltdim. Ama verilerim doğru. Teşekkürler. – Raphael

+0

@Raphael, json yapılandırması "p_partkey" ile ilgilidir, örnek verilerde bu alan hiç mevcut değildir. –

cevap

0

ETL'yi kullanmayı bıraktım ve python kullanarak yaptım, daha kolaydı.

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() 

sen çok dikkat etmeye gereken tek şey benim json dosyası satırbaşları yok olmasıdır, bu yüzden taleb() işlevi çalışır:

İşte benim kod gider.