2011-01-05 4 views
9

В последнее время я играю с PostgreSQL, и мне трудно понять, как создавать резервные копии и восстанавливать одну таблицу.pg_dump игнорирует последовательность таблиц?

Я использовал pgadmin3 для резервного копирования одной таблицы в моей базе данных, чтобы скопировать ее на другой сервер. Когда я пытаюсь сделать pg_restore на файл, я получаю сообщение об ошибке, что последовательность не существует:

pg_restore: [archiver (db)] could not execute query: ERROR: relation "businesses_id_seq" does not exist 
    Command was: 
CREATE TABLE businesses (
    id integer DEFAULT nextval('businesses_id_seq'::regclass) NOT NULL, 
    name character varyin... 

Похоже, что файл дамп не включает последовательность для моего авто приращения колонки. Как мне его включить?

ответ

12

демпинг только за столом - сбрасывает только стол. Вам необходимо выгрузить последовательность отдельно в дополнение к таблице.

Если вы не знаете свою последовательность, вы можете перечислить ее с помощью \d yourtable в psql. Вы увидите что-то в строке ваша последовательность на том, что выглядит следующим образом: nextval('yourtable_id_seq'::regclass')

Затем из командной строки, pgdump -t yourtable_id_seq

http://www.postgresql.org/docs/9.0/static/app-pgdump.html

+0

вы знаете, если я могу указать через запятую после й опции -t ли? Например: pgdump -t mytable, mytabl_id_seq – demersus

+0

Нет, но вы можете указать несколько переключателей -t. Пример: pgdump -t mytable -t mytabl_id_seq – phord