PostgreSQL | Как сохранить данные одного столбца таблицы на ПК?

PostgreSQL | Как сохранить данные одного столбца таблицы на ПК?

Как сделать SQL-дамп данных одного столбца таблицы PostgreSQL на ПК в отдельный файл?

У нас есть таблица с несколькими столбцами и несколькими записями. Мы хотим сохранить на компьютер данные только из одного столбца этой таблицы, чтобы у нас получился файл с расширением «.sql«.

Этот файл нам нужен для хранения наиболее важной части информации из таблицы. Такой файл не хранит индексы таблицы и так как он текстовый, то его можно будет легко сжать архиватором и передать куда-то ещё. Как это сделать?

Вкратце план действий такой:

  1. Создаём новую таблицу на основании запроса выборки (через интерфейс pgAdmin4 или через терминальный клиент psql)
  2. Переходим к терминал операционной системы, где установлен PostgreSQL
  3. Используем команду сохранения — pg_dump
  4. Копируем файл выгрузки в нужное место
  5. Удаляем созданную ранее таблицу

 

SQL-запрос на получение только одного столбца таблицы PostgreSQL

Такой командой мы получаем все столбцы таблицы:

SELECT * FROM filter.t_baddlevel2;

В моём случае нужно использовать уточнение для столбца «baddname» (хранит плохие мусорные домены второго уровня сети интернет):

SELECT baddname FROM filter.t_baddlevel2;

Результат вызова в веб-интерфейсе pgAdmin4:

Получили столбец с данными для сохранения на ПК - PostgreSQL
Получили столбец с данными для сохранения на ПК — PostgreSQL

Сперва мы должны знать, что именно мы хотим получить. Делаем запрос на выборку данных и убеждаемся, что всё правильно. У нас получилось 36188 записей имён доменов второго уровня, которые нужны для фильтрации новых адресов для базы данных.

 

Создание новой таблицы на основании запроса SELECT в PostgreSQL

Команда SELECT по факту возвращает нам новую таблицу, пусть даже с одним столбцом. Это значит, что мы можем из нашего запроса создать отдельную таблицу.

CREATE TABLE filter.t_baddname_temp AS SELECT baddname FROM filter.t_baddlevel2;

При помощи команды CREATE TABLE AS мы создаём новую таблицу с именем «t_baddname_temp» в схеме данных «filter«.

Создали новую таблицу с одним столбцом на основании запроса SELECT в PostgreSQL
Создали новую таблицу с одним столбцом на основании запроса SELECT в PostgreSQL

Проверяем, что все данные перенеслись корректно.

SELECT * FROM filter.t_baddname_temp;

Если в новой таблице будут не те данные, то эту таблицу-клон можно будет просто удалить.

DROP TABLE filter.t_baddname_temp;

 

Использование консольной утилиты pg_dump для сохранения данных новой таблицы из PostgreSQL на компьютер в операционную систему — в файл

К этому моменту у нас уже есть нужная таблица для сохранения. Теперь мы должны подключиться к удалённому хосту на котором обслуживается PostgreSQL. Для этого нужно знать логин и пароль для входа в ОС, а также логин и пароль пользователя, от имени которого будет выполняться сохранение данных из СУБД.

В общем нужно знать две учётные записи.

В терминале операционной системы (например, Debian) под правильным пользователем нужно ввести команду:

pg_dump -t 'filter.t_baddname_temp' sdb > filter.t_baddlevel2-2023-01-19.sql

После выполнения, файл будет сохранён в директорию «/var/lib/postgresql«.

Сохранили таблицу PostgreSQL с данными на компьютер через утилиту pg_dump
Сохранили таблицу PostgreSQL с данными на компьютер через утилиту pg_dump

Если вы захотите сменить путь сохранения, то имейте ввиду, что вашему пользователю PostgreSQL может быть отказано в доступе для сохранения в нужный вам путь в ОС. Болванка файла сможет появиться, но он будет пустой.

 

Просмотр файла для проверки сохранения

Открываем наш файл в любом текстовом редакторе и смотрим.

Пример первых 40 строк кода дампа таблицы PostgreSQL
Пример первых 40 строк кода дампа таблицы PostgreSQL

Начальная часть файла будет содержать важную для PostgreSQL информацию о состоянии таблицы. После этого последуют сами данные:

Данные одного столбца таблицы в файле дампа PostgreSQL
Данные одного столбца таблицы в файле дампа PostgreSQL

Теперь можно удалить временную таблицу.

 

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

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

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

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

Синтаксис SQL-команды CREATE TABLE AShttps://postgrespro.ru/docs/postgresql/15/sql-createtableas

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

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

Список команд терминального клиента PSQLhttps://postgrespro.ru/docs/postgresql/15/app-psql

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