如何一次将多个JSON文件插入postgresql表?

时间:2015-04-07 17:36:28

标签: sql json database postgresql data-migration

我有多个JSON文件,它们都具有相同的格式,但基于每个事务的值都不同。我想将此数据迁移到postgresql表。进行此操作的最佳方法是什么?

现在,我正在使用以下查询:

CREATE TABLE TEST (MULTIPROCESS VARCHAR(20), HTTP_REFERER VARCHAR(50));
INSERT INTO TEST SELECT MULTIPROCESS, HTTP_REFERER FROM json_populate_record(NULL::test, '{"multiprocess": true,"http_referer": "http://localhost:9000/"}');

但是,一旦文件数量变大,使用这种技术就变得非常困难。有没有其他方法可以有效地做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用LATERAL JOIN一次插入多行:

 WITH 
  json AS(
   VALUES('{"multiprocess": true,"http_referer":"http://localhost:9000"}')
     ,('{"multiprocess": false,"http_referer": "http://localhost:9001/"}')
     ,('{"multiprocess": true,"http_referer": "http://localhost:9002/"}')
) INSERT INTO test 
   SELECT multiprocess, http_referer 
   FROM   json, LATERAL json_populate_record(NULL::test, json.column1::json); 

或者您可以先插入临时表,然后填充另一个表。