2015-04-07 3 views
1

У меня есть несколько файлов JSON, все они имеют одинаковый формат, но значения различаются в зависимости от каждой транзакции. Я хочу перенести эти данные в таблицу postgresql. Каков наилучший способ для этого?Как вставить несколько файлов 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

Вы можете использовать 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); 

Или вы можете вставить в промежуточную таблицу, а затем заполнить вашу другую таблицу.

Смежные вопросы