pgAdmin 4 | Как загрузить данные в отдельную таблицу в Debian?

pgAdmin 4 | Как загрузить данные в отдельную таблицу в Debian?

Это про Linux. Столкнулся с проблемой «Импорта/Экспорта«. Встроенный в pgAdmin 4 инструмент загружает файлы в свой «Storage Manager«, но при импорте данных в таблицу ничего не происходит.

 

Решение

Можно пойти иным путём и самостоятельно выполнить SQL-запрос при помощи «Запросника» (Query tool) на выделенной таблице. Как это делать?

 

Как выглядит таблица, в которую мы будем загружать данные из файла?

Таблица из пяти строк и трёх столбцов - скрин из pgAdmin4
Таблица из пяти строк и трёх столбцов — скрин из pgAdmin4

В эту таблицу мы будем дописывать данные.

 

Шаг 1 — Загрузка файла формата text на хост (физический сервер) в директорию /tmp

Нужно подключиться к серверу по ftp через FileZilla и загрузить файл с данными. В нашем случае файл будет называться «jorik.txt«.

Его содержимое простое — одна строка с разделениями столбцов символом ‘;‘ точки с запятой:

Жориков;Жорик;Жорикович
Содержимое файла jorik.txt для загрузки в таблицу PostgreSQL из Debian
Содержимое файла jorik.txt для загрузки в таблицу PostgreSQL из Debian

 

Шаг 2 — Выделение нужной таблицы

Откройте нужный Сервер через интерфейс pgAdmin 4.

Откройте нужную Базу Данных через интерфейс pgAdmin 4.

Откройте нужную Схему через интерфейс pgAdmin 4.

Выделите нужную Таблицу через интерфейс pgAdmin 4.

 

pgAdmin4 выделили нужную таблицу в дереве
pgAdmin4 выделили нужную таблицу в дереве

В нашем случае таблица называется «efim2022db_fio»

 

Шаг 3 — Вызов Запросника для этой таблицы

Нажимаем правой кнопкой по выделенной таблице и в выпавшем меню выбираем «Запросник» (Query tool).

pgAdmin4 нажали правой кнопкой по нужной таблице и видим Запросник
pgAdmin4 нажали правой кнопкой по нужной таблице и видим Запросник

 

Нам откроется пустое окно «Запросника» (Query tool) для выделенной таблицы. В нём нас интересует поле с вкладкой «Query Editor«.

Обратите внимание, что вкладка «Результат» не содержит данных. Это потому что мы ещё не выполнили никакой запрос.

pgAdmin4 пустое окно Запросника выделенной таблицы
pgAdmin4 пустое окно Запросника выделенной таблицы

 

 

Шаг 4 — Получение ВСЕХ данных из этой таблицы при помощи Запросника и SQL-запроса

Команда:

select * from public."efim2022db_fio"

Можно писать SQL-команды и SQL-предложения с маленькими буквами. Запросник в 2022 уже их понимает и различает.

pgAdmin4 ввели запрос на получение всех данных из таблицы
pgAdmin4 ввели запрос на получение всех данных из таблицы

 

После написания команды, нужно нажать на кнопку «Выполнения запроса» (Execute/Refresh) или клавиша F5.

pgAdmin4 Запрос выполнится - Таблица загрузилась в интерфейс
pgAdmin4 Запрос выполнится — Таблица загрузилась в интерфейс

Мы увидели все данные нужной таблицы. В нашем случае это 5 строк. Именно их мы и хотим сохранить к себе на сервер.

 

Шаг 5 — Создаём SQL-запрос на дописывание информации из файла на сервере

Мы говорим о ОС Debian, поэтому нужно понимать структуру хранения файлов и каталогов в данной ОС.

Ещё важно понимать, что такое пользователи и их права на управление файлами.

Справка

Заданный файл должен быть доступен пользователю PostgreSQL (тому пользователю, от имени которого работает сервер), и путь к файлу должен задаваться с точки зрения сервера.

Команда:

copy public."efim2022db_fio" from '/tmp/jorik.txt' delimiter ';';

Мы загружаем данные из каталога «/tmp» из файла «jorik.txt«. Каталог «/tmp» присутствует в любой ОС под управлением Linux.

pgAdmin4 Добавили вторую строку с SQL-запросом загрузки данных в таблицу
pgAdmin4 Добавили вторую строку с SQL-запросом загрузки данных в таблицу

 

Шаг 6 — Выполняем SQL-запрос на копирование информации из файла

Выделяем второй запрос от начала до конца. Нажимаем кнопку «Выполнения запроса» (Execute/Refresh) или клавиша F5.

pgAdmin4 Выделили только вторую строку в Запроснике для загрузки данных в таблицу
pgAdmin4 Выделили только вторую строку в Запроснике для загрузки данных в таблицу

 

После вызова нас встречает позитивное зелёное уведомление о том, что запрос на загрузку данных из файла выполнился успешно.

pgAdmin4 Запрос на загрузку данных в таблицу из файла завершён успешно - Зелёное информационное сообщение
pgAdmin4 Запрос на загрузку данных в таблицу из файла завершён успешно — Зелёное информационное сообщение

Информация на вкладке «Сообщения» это подтверждает.

pgAdmin4 вкладка Сообщение в Запроснике - Успешное выполнение COPY - 1 элемент
pgAdmin4 вкладка Сообщение в Запроснике — Успешное выполнение COPY — 1 элемент

С этого момент таблица обновлена.

 

Шаг 7 — Выделяем первый SQL-запрос на получение всех данных из таблицы

pgAdmin4 выделили первую строку с запросом на получение всех данных из таблицы efim2022db_fio
pgAdmin4 выделили первую строку с запросом на получение всех данных из таблицы efim2022db_fio

Выполняем вызов. Нажимаем кнопку «Выполнения запроса» (Execute/Refresh) или клавиша F5.

pgAdmin4 В таблицу efim2022db_fio успешно добавилась строка из файла. Данные обновлены
pgAdmin4 В таблицу efim2022db_fio успешно добавилась строка из файла. Данные обновлены

Данные успешно загружены в таблицу из файла. Задача выполнена!

 

Справка

Инструмент «Storage Manager» по-умолчанию ограничивает размер файла, который может быть в него загружен из клиентской операционной системы.

Уведомление

Drop files here to upload. The file size limit (per file) is 50 mb.

Перетащите сюда файлы для загрузки. Ограничение на размер файла (на файл) составляет 50 мб.

Это значит, что загрузить файл с данными, размером более 50 мегабайт не получится.

Мы рассмотрели удобный вариант загрузки данных в конкретную таблицу т. к. размер файла в этом случае может быть существенно больше.

 

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

Синтаксис 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

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

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

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

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