PostgreSQL | Как из файла скопировать все данные таблицы с разделителем в нужные столбцы другой таблицы на сервере?

PostgreSQL | Как из файла скопировать все данные таблицы с разделителем в нужные столбцы другой таблицы на сервере?

Таблица в СУБД

Для анализа, сначала получаем все данные нужной таблицы «rrr» на сервере:

SELECT * FROM public.rrr

В таблицу «rrr» мы будем загружать данные из файла на физическом сервере.

Таблица «rrr» содержит 10 столбцов. Они называются (для простоты):

r1, r2, r3, r4, r5, r6, r7, r8, r9, r10

Первичным ключом в этой таблице является «r1«. Он формируется автоматически при добавлении новой строки. Первичный ключ является автоинкрементом (стартует с 1 и прибавляет 1 на каждую строку).

Пустая таблица с 10 столбцами в pgAdmin 4
Пустая таблица с 10 столбцами в pgAdmin 4

 

Файл на сервере

В файле «qwe.txt» имеются данные только для 4 столбцов. Строки разделены переносами. Внутри строк проставлены разделители «^» между данными столбцов.

Файл "qwe.txt" из 3 строк и 4 столбцов
Файл «qwe.txt» из 3 строк и 4 столбцов

Мы хотим добавить данные всех 4 столбцов из файла в определённые столбцы нашей таблицы: r3, r4, r6, r9. Как это сделать?

Вася1^Вася2^Вася3^Вася4
Дима11^Дима12^Дима13^Дима14
Маша74^Маша73^Маша72^Маша71

 

Решение

Нам нужен синтаксис команды COPY FROM.

После ключевого слова COPY, мы записываем название нашей таблицы в которую будет «заливать» данные.

ВАЖНО!!!

После этого в круглых скобках мы перечисляем названия столбцов, в которые хотим «залить» все данные из файла.

COPY public.rrr(r3, r4, r6, r9) FROM '/tmp/qwe.txt' delimiter '^';

Вызов этого SQL-запроса будет добавлять данные в нужные нам столбцы таблицы. Таким образом мы можем исключать из «заливки» лишние столбцы.

Успешно добавили данные в нужные столбцы таблицы из файла в pgAdmin 4
Успешно добавили данные в нужные столбцы таблицы из файла в pgAdmin 4

 

Информационные ссылки

Синтаксис SQL-команды SELECT на русском языке — https://postgrespro.ru/docs/postgresql/14/sql-select

Синтаксис SQL-команды COPY на русском языке — https://postgrespro.ru/docs/postgresql/14/sql-copy

Команды SQL в PostgreSQL 14https://postgrespro.ru/docs/postgresql/14/sql-commands

Официальный сайт PostgreSQLhttps://www.postgresql.org

Графический веб-интерфейс для управления СУБД PostgreSQLhttps://www.pgadmin.org

Операционная система Debianhttps://www.debian.org

pgAdmin 4 | Первичный ключ автоинкремент