При работе с СУБД PostgreSQL часто возникает ситуация, когда резервная копия базы данных представляется в виде обычного текстового файла с расширением .sql. Попытка восстановить такой файл через стандартную функцию Restore в графических клиентах (например, в pgAdmin3) может завершиться ошибкой, так как программа по умолчанию ожидает архив в специальном или tar-формате. Разберем причинно-следственные связи этой проблемы и проанализируем доступные варианты решения.
Файл резервной копии с расширением .sql — это обычный текстовый скрипт, состоящий из SQL-команд (таких как CREATE TABLE, INSERT INTO или COPY). При выборе пункта меню Restore в графических интерфейсах pgAdmin вызывается служебная утилита pg_restore. Эта утилита предназначена исключительно для работы с сжатыми архивами в кастомном (custom) или tar-формате и категорически не поддерживают исполнение открытого текстового кода SQL.
Для корректной загрузки текстовых дампов необходимо либо выполнить этот файл как SQL-скрипт в среде управления СУБД, либо воспользоваться консольной утилитой psql.
Рассмотрим наилучший и самый надежный способ разворачивания .sql дампов, который подходит для баз данных любого объема, включая информационные базы 1С.
UTF8 и корректной локализацией.psql:
psql -h localhost -U postgres -d name_of_db -f C:\backups\backup_file.sql
set PGCLIENTENCODING=UTF8
psql -h localhost -U postgres -d name_of_db -f C:\backups\backup_file.sql
Для гарантированной остановки процесса при возникновении критических ошибок добавим в команду специальный ключ: --set ON_ERROR_STOP=on.
Проанализируем порядок действий при работе через графический клиент pgAdmin, если дамп имеет небольшой размер (до нескольких сотен мегабайт):
.sql через иконку открытия файла.Важное замечание: Не рекомендуется открывать текстовые дампы размером в несколько гигабайт в окне редактора запросов pgAdmin. Это приведет к критическому переполнению оперативной памяти и зависанию приложения.
Если используется pgAdmin 4, то восстановить файл .sql через пункт меню Restore все же возможно, если правильно указать фильтр файлов:
При работе с информационными базами 1С учтем следующие важные нюансы:
ragent) или завершим все активные фоновые сеансы.ALTER OWNER) или назначения прав (GRANT), в целевой СУБД заранее создадим соответствующие роли или выполним загрузку от имени суперпользователя postgres.Для повседневной работы с базами 1С на базе PostgreSQL рекомендуется отказаться от выгрузки в простой текстовый формат .sql и использовать кастомный формат резервных копий. При формировании бэкапа утилитой pg_dump указывают ключ -F c, что создает архив формата .backup. Такие архивы легко восстанавливаются штатным средством pg_restore, позволяют выполнять параллельное многопоточное восстановление (ключ -j) и существенно экономят дисковое пространство.