2015-10-14 21 views
7

Ho bisogno di caricare dati da più file JSON ciascuno con più record all'interno di essi su una tabella Postgres. Sto usando il seguente codice ma non funziona (sto usando pgAdmin III sulle finestre)Caricamento di dati json da un file in Postgres

COPY tbl_staging_eventlog1 ("EId", "Category", "Mac", "Path", "ID") 
from 'C:\\SAMPLE.JSON' 
delimiter ',' 
; 

il contenuto del file SAMPLE.JSON è come questo (che dà due dischi di molti di questi):

[{"EId":"104111","Category":"(0)","Mac":"ABV","Path":"C:\\Program Files (x86)\\Google","ID":"System.Byte[]"},{"EId":"104110","Category":"(0)","Mac":"BVC","Path":"C:\\Program Files (x86)\\Google","ID":"System.Byte[]"}] 
+0

versione Quali Postgres? 9.3? 9.4? – Christian

+0

controlla questo http://stackoverflow.com/a/24196160/3961156 –

risposta

20

Prova questo:

-- let's create a temp table to bulk data into 
create temporary table temp_json (values text) on commit drop; 
copy temp_json from 'C:\SAMPLE.JSON'; 

-- uncomment the line above to insert records into your table 
-- insert into tbl_staging_eventlog1 ("EId", "Category", "Mac", "Path", "ID") 

select values->>'EId' as EId, 
     values->>'Category' as Category, 
     values->>'Mac' as Mac, 
     values->>'Path' as Path, 
     values->>'ID' as ID  
from (
      select json_array_elements(replace(values,'\','\\')::json) as values 
      from temp_json 
     ) a; 
+0

Grazie mille! Questo è molto utile – anil

+0

@anil: quindi dovresti accettare questa risposta come quella corretta. – Christian

+0

Sembra perfetto tuttavia, ricevendo ERRORE: la relazione "temp_json" non esiste. –

Problemi correlati