2015-10-14 17 views
7

複数のJSONファイルから複数のレコードを持つデータをPostgresテーブルにロードする必要があります。ファイルからjsonデータをPostgresにロード

[{"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[]"}] 
:SAMPLE.JSONファイルの内容は、この(このような多くのうちの二つのレコードを与える)のようなものです

COPY tbl_staging_eventlog1 ("EId", "Category", "Mac", "Path", "ID") 
from 'C:\\SAMPLE.JSON' 
delimiter ',' 
; 
を私は次のコードを使用していますが、それは(Windows上pgAdminでIIIを使用しています)動作しません。
+0

どのPostgresのバージョンですか? 9.3? 9.4? – Christian

+0

これをチェックしてくださいhttp://stackoverflow.com/a/24196160/3961156 –

答えて

20

試用版:

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

ありがとう!これは非常に役に立ちます – anil

+0

@anil:この回答を正しいものとして受け入れるべきです。 – Christian

+0

しかし、完璧に見えますが、「ERROR:relation」というtemp_jsonは存在しません。 –

関連する問題