2015-05-25 12 views
8

Non riesco ad aggiungere dati alle tabelle che contengono una colonna di array utilizzando insert in statement; il tipo di dati è array < varchar (200)>Hive che inserisce valori in una colonna di tipo complesso di array

utilizzando jodbc non sono in grado di inserire i valori in una colonna fila per valori come:

INSERT INTO demo.table (codes) VALUES (['a','b']); 

non riconosce la "[" o "{" segni .

Utilizzando la funzione di matrice come ...

INSERT INTO demo.table (codes) VALUES (array('a','b')); 

ottengo il seguente errore con funzione di matrice:

Unable to create temp file for insert values Expression of type TOK_FUNCTION not supported in insert/values 

provato la soluzione ...

INSERT into demo.table (codes) select array('a','b'); 

senza successo:

Failed to recognize predicate '<EOF>'. Failed rule: 'regularBody' in statement 

Come posso caricare i dati dell'array in colonne usando jdbc?

risposta

2

fare una tabella dummy che ha almeno one row.

INSERT INTO demo.table (codes) VALUES (array('a','b')) from dummy limit 1; 

hive> select codes demo.table; 
OK 
["a","b"] 
Time taken: 0.088 seconds, Fetched: 1 row(s) 
+0

Potresti specificare quale tabella fittizia deve contenere? La tabella fittizia –

+0

è semplicemente una tabella dimostrativa che ha almeno una riga. –

+0

Ho creato una tabella fittizia con due campi STRING e ho utilizzato il comando 'INSERT INTO ADS (pageid, adid_list) VALUES ('front_page', array (1,2,3)) FROM DUMMY LIMIT 1;' e ha ottenuto l'errore: ' FAILED: la riga ParseException 1:16 non è in grado di riconoscere l'input vicino a '(' 'pageid' ',' in statement'. Potete aiutare qui !! – SrinivasR

5

La mia tabella ha due colonne: a STRING, b ARRAY<STRING>.

Quando uso il metodo di @Kishore Kumar Suthar, ho ottenuto questo:

FAILED: ParseException line 1:33 cannot recognize input near '(' 'a' ',' in statement

Ma trovare un altro modo, e funziona per me:

INSERT INTO test.table 
SELECT "test1", ARRAY("123", "456", "789") 
FROM dummy LIMIT 1; 

dummy è un qualsiasi tabella che ha almeno una riga.