我有多个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/"}');
但是,一旦文件数量变大,使用这种技术就变得非常困难。有没有其他方法可以有效地做到这一点?
答案 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);
或者您可以先插入临时表,然后填充另一个表。