我需要从多个JSON文件中加载数据,每个文件中都有多个记录到Postgres表中。我正在使用以下代码,但无法正常工作(在Windows上使用pgAdmin III)
COPY tbl_staging_eventlog1 ("EId", "Category", "Mac", "Path", "ID") from 'C:\\SAMPLE.JSON' delimiter ',' ;
SAMPLE.JSON文件的内容是这样的(从许多这样的记录中得到两个记录):
[{"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[]"}]
试试这个:
BEGIN; -- 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; COMMIT;