Intereting Posts
Rails: Сортировка нилей до конца области? Эквивалент Oracle PostgreSQL INSERT … RETURNING *; Возможно ли иметь SQL-запрос, который использует функции AGG таким образом? сложные строки дерева sql Инкремент счетчика или вставка строки в одном выражении, в SQLite Объединение двух таблиц в sqlite из разных баз данных Oracle SQL – может ли CASE использоваться в контрольном ограничении для определения атрибутов данных? Rails SQL Query с поиском Почему вы используете «AS» при сглаживании таблицы SQL? Информация об обновлении SQL с использованием другой записи из той же таблицы Запись тегов на основе динамических атрибутов и фильтров из другой таблицы Создание значений строк в значениях столбцов – SQL PIVOT Проверьте, ссылается ли на объект SQL любые другие объекты SQL Объединение нескольких баз данных в единую базу данных Как принудительно закрыть SqlConnection при использовании пула соединений?

Как вставить несколько файлов 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/"}'); 

Но, как только количество файлов станет большим, очень сложно использовать эту технику. Есть ли другой способ сделать это эффективно?

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

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