ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Экспорт отдельных строк из PostgreSQL в SQL-скрипт

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для экспорта конкретных строк из таблицы PostgreSQL в формат SQL-скрипта INSERT лучше всего использовать утилиту pg_dump:

sh
Скопировать код
pg_dump -d YourDBName -U YourUserName --data-only --column-inserts --table=your_table_name --format=plain --where="id = 123" > inserts.sql

В данную команду вы должны вписать имя вашей базы данных (YourDBName), имя пользователя (YourUserName), наименование таблицы (your_table_name) и условие отбора строк ("id = 123"). Результат выполнения команды – это файл inserts.sql, включающий требуемые операторы INSERT.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Создание представлений – краткие рекомендации

Для регулярного экспорта одних и тех же строк целесообразно пользоваться созданием представлений при помощи команды CREATE VIEW. Это позволит сосредоточиться исключительно на нужных данных:

SQL
Скопировать код
CREATE VIEW MyView AS SELECT * FROM Your_Table WHERE condition;

После формирования представления экспорт через pg_dump становится проще, так как опция --where использоваться уже не нужна:

sh
Скопировать код
pg_dump -d YourDBName -U YourUserName --data-only --column-inserts --table=MyView --format=plain > inserts.sql

Один раз – не стандарт. Используем временные таблицы

В случае, когда необходимо выполнить единичный экспорт или предобработку данных, можно применять временные таблицы:

SQL
Скопировать код
CREATE TEMP TABLE TempTable AS SELECT * FROM Your_Table WHERE condition;

Затем осуществляется экспорт с помощью pg_dump для TempTable. Обратите внимание: временная таблица существует только в рамках текущей сессии.

Добавляем Grep в свой инструментарий

Нередко требуется сначала создать скрипт INSERT для всей таблицы, а потом отфильтровать определённые строки с помощью grep:

sh
Скопировать код
pg_dump -d YourDBName -U YourUserName --data-only --column-inserts --table=TableName --format=plain | \
grep 'PatternYouAreLookingFor' > filtered_inserts.sql

Такой подход дает дополнительный контроль на процессом экспортирования.

Визуализация

Представьте разноцветные кубики LEGO как строки PostgreSQL таблицы. Наша задача — выбрать из них необходимые элементы (🚀🏠🌳) и перенести их в другое место для создания конструкции.

Выбранные элементы превращаются в инструкцию (📜), позволющую в другом месте собрать желаемую структуру.

Переход к использованию команды COPY по умолчанию

Если вы отдаете предпочтение команде COPY, содержимое таблицы экспортируется в файл формата CSV, который затем преобразуется в операторы INSERT:

SQL
Скопировать код
COPY (SELECT * FROM Your_Table WHERE condition) TO '/path/to/output.csv' WITH CSV HEADER;

С помощью внешних утилит CSV-файл можно преобразовать в операторы INSERT.

Для тех, у кого нет прав суперпользователя

Недостаток привилегий суперпользователя не станет проблемой благодаря команде \copy в psql, которая позволяет экспортировать данные на локальный компьютер:

SQL
Скопировать код
\copy (SELECT * FROM Your_Table WHERE condition) TO '/path/to/Output.csv' WITH CSV HEADER;

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

Напоминаем о проверке совместимости и устранении конфликтов

Существенно учитывать совместимость с целевой структурой и типами данных при экспорте, особенно если используется COPY для формирования CSV-файлов и последующих операторов INSERT. Нужно подстраивать данные под целевые типы и устранять конфликты.

Противостояние титанов: командная строка против GUI при экспорте

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

Завершение

Всегда хорошо делать периодические резервные копии, чтобы гарантировать сохранность данных и спокойствие за их возможное восстановление.

Полезные материалы

  1. PostgreSQL: Документация: 16: COPY — официальная документация PostgreSQL по команде COPY.
  2. PostgreSQL: Документация: 16: pg_dump — полезные сведения о pg_dump.
  3. Пару минут терпения... — дискуссия методов экспорта строк в INSERT.
  4. pgAdmin — универсальный набор инструментов для управления PostgreSQL.
  5. SQL Fiddle — платформа для испытания SQL-запросов.
  6. Dataedo — утилита для документирования баз данных.
Свежие материалы