2011-01-05 15 views
9

Ostatnio korzystam z PostgreSQL i mam problemy ze sposobem tworzenia kopii zapasowej i przywracania pojedynczej tabeli.pg_dump ignoruje kolejność tabel?

Użyłem pgadmin3 do utworzenia kopii zapasowej pojedynczej tabeli w mojej bazie danych, aby skopiować ją na inny serwer. Kiedy próbuję zrobić pg_restore na plik, otrzymuję komunikaty o błędach, mówiąc, że sekwencja nie istnieje:

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... 

Wygląda pliku zrzutu nie zawiera sekwencję moje auto zwiększający kolumny. Jak mogę to załączyć?

Odpowiedz

12

Zrzucanie tylko według tabeli - spowoduje tylko zrzut tabeli. Musisz zrzucić sekwencję oddzielnie oprócz tabeli.

Jeśli nie znasz sekwencji, możesz ją podać pod numerem \d yourtable w psql. widać coś w rzędzie swoją kolejność jest na to wygląda: nextval('yourtable_id_seq'::regclass')

następnie z linii poleceń, pgdump -t yourtable_id_seq

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

+0

Czy wiesz, czy mogę podać przecinek po XX -t flagą? W ten sposób: pgdump -t mytable, mytabl_id_seq – demersus

+0

Nie, ale możesz podać wiele przełączników -t. W ten sposób: pgdump -t mytable -t mytabl_id_seq – phord