Инсерт в таблицу множества одинаковых строк, но с разным id

Рейтинг: 0Ответов: 1Опубликовано: 04.08.2023

Есть простая таблица User

 Name TEXT,
 Age NUMBER,
 work TEXT

Надо просто вставить около 100 записей. Дело в том что name и age одинаковые, меняется только work который обычный guid.

Этих гуидов у меня может быть очень много, в районе 1000 и я хотел бы узнать если ли какой-нить способ это сделать 1 запросом. giud разумеется заранее известны и я просто его подставляю при инсерте.

Пользуюсь PGSQL, но иногда приходится делать такие запросы и в sqlite

Ответы

▲ 0

ДЕМО

Набор значений передаётся как JSON array.

CREATE TABLE test ( Name TEXT,
                    Age INTEGER,
                    work TEXT );
INSERT INTO test
SELECT 'Name X',  -- значение для поля Name 
       25,        -- значение для поля Age
       value      -- значение для поля Work
-- парсинг сериализованного набора на отдельные элементы
FROM json_array_elements_text( '[
                                 "Work 1",
                                 "Work 2",
                                 "Work 3"
                                ]' );
SELECT * FROM test;
name age work
Name X 25 Work 1
Name X 25 Work 2
Name X 25 Work 3

fiddle

Аналогично можно передавать набор данных, сериализованный в CSV или иной формат. В зависимости от СУБД и формата сериализации использовать соответствующую функцию.