2011-01-05 21 views
9

Ich habe in letzter Zeit mit PostgreSQL herumgespielt und habe Probleme zu verstehen, wie man eine einzelne Tabelle sichert und wiederherstellt.pg_dump ignoriert Tabellensequenz?

Ich habe pgadmin3 verwendet, um eine einzelne Tabelle in meiner Datenbank zu sichern, um sie auf einen anderen Server zu kopieren. Wenn ich versuche, eine pg_restore auf die Datei zu tun, erhalte ich Fehlermeldungen angezeigt, dass die Sequenz nicht existiert:

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

Es ist wie der Dump-Datei sieht nicht enthalten die Sequenz für meine Auto Säule erhöht wird. Wie bekomme ich es dazu?

Antwort

12

Dumping nur durch Tabelle - wird nur die Tabelle ausgeben. Sie müssen die Sequenz zusätzlich zur Tabelle separat ablegen.

Wenn Sie Ihre Sequenz nicht kennen, können Sie sie mit \d yourtable in psql auflisten. Sie werden etwas in der Reihe Ihrer Sequenz zu sehen ist, dass wie folgt aussieht: nextval('yourtable_id_seq'::regclass')

Dann von der Kommandozeile, pgdump -t yourtable_id_seq

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

+0

Wissen Sie, wenn ich ein Komma nach th Flag -t angeben? Wie folgt: pgdump -t mytable, mytabl_id_seq – demersus

+0

Nein, aber Sie können mehrere -t-Schalter angeben. So: pgdump -t meineTabelle -t mytabl_id_seq – phord

Verwandte Themen