Приложение pg_dump
Приложение pg_dump
Приложение pg_dump запускается в режиме командной строки и строит серию команд SQL. Выполнение этих команд в указанном порядке позволяет полностью воссоздать базу данных.
Синтаксис приложения pg_dump:
pg_dump [ параметры ]база_данных
Параметр база_данных определяет имя базы данных, для которой генерируются команды SQL. Строка параметров имеет такой же формат, как у других утилит управления базами данных (например, createdb). В ней чаще всего передается ключ - f для определения файла, в котором сохраняются сгенерированные команды.
Примечание 1
Примечание 1
Если флаг -f не указан, сгенерированные команды SQL вместо записи в файл выводятся в поток stdout.
Ниже приведен полный список ключей приложения pg_dump.
- -а, - -data_only. Приложение генерирует только команды SQLCOPY и INSERT(B зависимости от того, установлен ли ключ -d). В результате архивируются только данные, хранящиеся в базе, но не объекты базы данных. Если ключ -а указывается без ключа -d, сгенерированные команды COPY копируют все данные из stdi n (то есть записи буквально сохраняются в выходном файле). В противном случае записи представляются последовательными командами INSERT.
- -b, --blobs. Большие двоичные объекты архивируются наряду с обычными данными. Также должен быть установлен ключ - F с форматом t или с. По умолчанию данные больших двоичных объектов не архивируются.
- -с, - -clean. Командам SQL, создающим объекты базы данных, должны предшествовать команды удаления этих объектов. Ключ обычно используется при повторной инициализации существующей базы данных (вместо ее удаления и создания на пустом месте).
- -С, --create. В выходные данные включается команда SQL для создания базы данных (CREATE DATABASE).
- -d, --inserts. Для записей генерируются команды INSERT вместо используемых по умолчанию команд COPY. Этот вариант безопаснее, так как одна поврежденная запись приводит к сбою всей команды COPY, но процесс восстановления занимает гораздо больше времени.
- -D, - -attribute_inserts. Ключ -D, как и -d, генерирует команды INSERT, но в каждую команду INSERT перед секцией VALUES включается список полей в круглых скобках.
- -f файл, --т"11е=0айл. Результаты работы pg_dump направляются в заданный файл вместо потока stdout. Пользователь, запускающий pg_dump, должен иметь системные права записи в этот файл.
- -F { с | t р }, --format { с | t | p }. Формат выходного файла (приложение pg_restore обычно используется для работы с файлами, созданными в форматах с или t — соответственно gzip или tar):
- с (сжатие gzip) — файл .tar, сжатый утилитой gzip (то есть .tar.gz); о t — файл .tar;
- р (простой текст) — выходной файл генерируется в простом текстовом формате (режим используется по умолчанию).
-h хост, --bost=xocm. Хост, с которым устанавливается связь вместо хоста local host. Используется в тех случаях, когда архивируемая база данных находится на другом сервере.
-i, - -ignore-version. Запрет сравнения версии pg_dump с текущей версией PostgreSQL. Ключ следует использовать лишь в крайних случаях, поскольку различия в структуре системных каталогов разных версий с большой вероятностью приведут к возникновению ошибок. Обычно версия pg_dump должна соответствовать версии архивируемой базы данных.
-n, - -no_quotes. Идентификаторы заключаются в кавычки только при наличии недопустимых символов (пробелов, символов верхнего регистра и т. д.).
- N, - - quotes. Все идентификаторы обязательно заключаются в кавычки. Используется в pg_dump по умолчанию, начиная с PostgreSQL 6.4.
-о, - -old. Вместе с данными записей архивируются OID (идентификаторы объектов). Ключ очень важен в приложениях, которые так или иначе осмысленно используют OID.
-0, - -no-owner. При создании архива не учитывается принадлежность базы данных. Объекты, созданные в результате восстановления данных, будут принадлежать пользователю, выполняющему эту операцию.
-р порт, --port=nopm. Порт, по которому должно производиться подключение к серверу, вместо порта по умолчанию (обычно 5432, хотя при компиляции PostgreSQL можно задать другой порт при помощи флага - -with-pgport).
-R, - -no-reconnect. Подавляет все команды \connect, которые обычно обеспечивают сохранение прав владельцев при восстановлении из архива. На практике ключ аналогичен ключу -0, но он также исключает возможность использования ключа -С, поскольку после создания новой базы необходимо заново установить подключение.
- s, - - schema - on! у. Генерируются только команды SQL для архивации таких объектов, как таблицы, последовательности, индексы и представления, а хранящиеся в таблицах данные игнорируются. Ключ может использоваться для копирования общей структуры базы данных с компьютера разработчика на компьютер, на котором база будет реально эксплуатироваться.
-t таблица, . В заданной базе данных архивируется только заданная таблица.
-u, --password. Запрос имени пользователя и пароля. В PostgreSQL 7.1.x этот ключ был единственным средством указания другого имени пользователя. Если пароль не задан (NULL), то в ответ на запрос можно просто нажать клавишу Enter.
-v, --verbose. Вывод функций pg_dump направляется в поток stderr, а не, как обычно, в поток stdout!
-х, --no-acl. Подавление команд GRANT и REVOKE, обычно используемых для сохранения прав, действующих на момент архивации. Ключ используется в том случае, если при восстановлении базы данных из архива не нужно восстанавливать существовавшие ранее права или ограничения.
-Z,--compress {0-9 }. Уровень сжатия (0 — минимальный, 9 — максимальный) при использовании с ключом -F с.
По умолчанию приложение pg_dump может запускаться любым системным пользователем, но пользователь, подключающийся к PostgreSQL, должен обладать правом выборки для всех объектов в архивируемой базе данных. В листинге 9.20 приведен пример использования программы pg_dump пользователем manager для базы данных booktown. Ключ -С включает в архив команду CREATE DATABASE. Эта команда включается не всегда, поскольку в некоторых случаях база данных создается заранее в нестандартной конфигурации.
Содержание раздела