2016-03-23 2 views
0

Как импортировать некоторые файлы json в OrientDB, чтобы использовать его как тип документа (а не график)?Импорт документа JSON в документ OrientDB с использованием ETL

Мои данные что-то вроде этого:

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

и создать configfile.json как под импорту, но не работают:

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

Там что-то случилось с моим конфиг? Нет примеров этого на документах OrientDB.

+0

Привет, это данные json, которые вы опубликовали? Я пытаюсь воспроизвести вашу ситуацию, но в ней ничего нет. –

+0

@IvanMainetti. Этот образец был недействительным json, я исправил его на этом посту. Но мои данные верны. Благодарю. – Raphael

+0

@ Raphael, json config относится к «p_partkey», тогда как в образце данных это поле вообще отсутствует. –

ответ

0

Я отказался от использования ETL и сделал это с помощью python, это было проще.

Вот идет мой код:

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

Единственное, что вы должны платить ВНИМАНИЕ, что мой файл JSON не имеют возврата каретки, поэтому функция Readline() работает.

Смежные вопросы