pgsadump(1) FreeBSD General Commands Manual pgsadump(1) NAME pgsadump -- Дамп файлов базы данных PostgreSQL, не используя PostgreSQL сервер. SYNOPSIS pgsadump [-0123456789BceEhlLqStVxvvvv] [-a atrmin] [-A atrmax] [-b blcksz] [-i ind_maxk] [-m atrterm] [-M atrmask] [-n version] [-N nbase] [-p mult] [-P shift] [-X alignmax] файл [типы ...] DESCRIPTION Процедура pgsadump предназначена для извлечения содержимого таблиц Post- greSQL без запуска сервера PostgreSQL, например, когда база данных разру- шена настолько, что сервер с ней нельзя запустить. На момент написания руководства распознавались следующие типы: bool bit int2 int4 int8 oid тут так же всевозможные xid, cid, regproc и т.п. tid float4 float8 numeric char name text bytea abstime reltime interval date time timetz timestamp обрабатывает так же timestamptz macaddr inet обрабатывает так же cidr _<имя типа> массив из <имя типа> Понимаются следующие флаги: -0 выводить битовую маску для NULL -1 выводить ctid из кортежа -2 выводить oid -3 выводить xmin -4 выводить cmin -5 выводить xmax. Это вычисляемое значение, не хранится само по себе в кортеже в файле. -6 выводить cmax -7 выводить t_infomask -8 выводить реальное количество атрибутов кортежа. -9 выводить ctid кортежа -a atrmin выводить только те кортежи, количество атрибутов в котором не меньше atrmin. По умолчанию atrmin == 0. -A atrmax выводить только те кортежи, количество атрибутов в котором не больше atrmax. По умолчанию atrmax == 1664. -b blcksz считать, что файлы СУБД созданы сервером с BLCKSZ = blcksz. По умолчанию определяется автоматом в версиях структуры файлов 0 и выше, и blcksz == 8192 для -1 версии. -B не останавливаться при ошибке в блоке -c не останавливаться при ошибке в колонке -e выводить кортеж, даже если ctid в нем не совпадает с ctid кортежа -E выводить кортеж, даже если он обозначен HEAP_HASEXTENDED -h вывод краткой подсказки -i ind_maxk считать, что файлы СУБД созданы сервером с INDEX_MAX_KEYS = ind_maxk. Не используется. -l выводить кортеж, даже если LP_USED в нем не установлен. -L выводить кортеж, даже если LP_DELETE в нем установлен. -m atrterm выводить только те кортежи, для которых справедливо ((t_infomask ^ atrterm ) & atrmask ) == 0, где atrmask определен флагом -M. По умолчанию atrterm == 0. -M atrmask см. описание -m выше. По умолчанию atrmask == 0. -n version номер версии структуры файлов. Поддерживаются следующие версии структуры файлов, соответствующие версии PostgreSQL: -1 6.4, 6.5, 7.0 0 7.1, 7.2 1 7.3, 7.4 2 8.0 3 8.1, 8.2 Номера версий -1 и 0 условные, остальные соответствуют PG_PAGE_LAY- OUT_VERSION. Если не задано, то версия определяется автоматом, но -1 автоматом определена быть не может. -N nbase считать, что файлы СУБД созданы сервером с NBASE = nbase. По умол- чанию nbase == 10000, реализовано разумное поведение для 100 и 10. Остальные значения не разрешены. -p mult мультипликатор, см. описание -P ниже. По умолчанию mult == 131072, что соответствует разбиению файлов на куски по 1073741824 байт при размере блока 8192 байт. Таковы параметры PostgreSQL по умолчанию. -P shift задает сдвиг нумерации блоков в файле на mult * shift. Применяется для таблиц, разбитых из-за размера на несколько файлов. Если mult соответствует размерам файлов, то shift задает номер файла, начиная с нуля. -q действовать с минимумом вывода в stderr . -S не останавливаться при несовпадении заданного blcksz с BLCKSZ, заданным в файле. -t не останавливаться при ошибке в кортеже -v[v...] Повышает уровень шума в stderr от программы в процессе работы. Чем больше флагов -v тем подробнее отладочная печать. По умолчанию выводятся только сообщения о серьезных ошибках. -V не останавливаться при невыполнении условия PG_PAGE_LAYOUT_VERSION == version. -x Выводить столько колонок, сколько задано. Если в кортеже не хватает значений, то вместо недостающих выводится NULL. -X alignmax считать, что файлы СУБД созданы сервером с MAXIMUM_ALIGNOF = alignmax По умолчанию alignmax соответствует размеру типа int. IMPLEMENTATION NOTES pgsadump была написана, глядя в тексты PostgreSQL 7.4, но не требует наличия PostgreSQL каких либо файлов от него ни при трансляции, ни при исполнении. RETURN VALUES Код возврата соответствует sysexits(3). EXAMPLES Если не задавать флагов, то происходит довольно разумный вывод таблиц PostgreSQL сервера версий с 7.1, собранного на этой же платформе. Так, pgsadump ${PGDATA}/base/1/1259 name oid oid int4 oid oid int4 float4 oid oid bool bool char int2 int2 int2 int2 int2 int2 bool bool bool bool выводит содержимое таблицы pg_class базы template0 от PostgreSQL 7.3 или 7.4 без последней колонки (тип aclitem не реализован). pgsadump ${PGDATA}/global/1262 name int4 int4 bool bool oid oid oid text _text выводит содержимое таблицы pg_database от PostgreSQL 7.3 или 7.4 без последней колонки. pgsadump ${PGDATA}/base/1/1247 name oid int4 int2 bool char bool char oid oid oid oid oid oid char char bool oid int4 int4 text text выводит содержимое таблицы pg_type базы template0 от PostgreSQL 7.3 или 7.4. pgsadump -n0 ${PGDATA}/base/1/1259 name oid int4 oid oid int4 float4 oid oid bool bool char int2 int2 int2 int2 int2 int2 bool bool bool bool выводит содержимое таблицы pg_class базы template0 от PostgreSQL 7.2 без последней колонки. pgsadump -1278vcte файл Оценить файл на предмет того, может ли он быть таблицей базы данных. SEE ALSO Http://www.PostgreSQL.org/ HISTORY pgsadump была написана в тот момент, когда очень важная база данных погибла в разрушенной файловой системе, попытки оживить базу оказались безуспешными в связи с гибелью важных для PostgreSQL сервера файлов, а в дамп не успели попасть нужные данные. С этой конкретной целью и спешкой связаны ограничения программы. AUTHOR Aleksandr A. Babaylov (aka @BABOLO) .@babolo.ru http://www.babolo.ru/ BUGS Документация могла бы быть и лучше. Не написан тип aclitem, возможно, пропущены еще какие-то важные типы дан- ных. Отлаживалось на PostgreSQL 7.4, слегка также проверено на файлах Post- greSQL 7.2, 6.5, 8.1. Другие версии PostgreSQL не проверялись. Все типы даты-времени выводятся в UTC, если в типе не предусмотрено явного хранения часового пояса. 08 Mart 2007