2011-01-05 2 views
9

Je joue autour avec PostgreSQL ces derniers temps, et je rencontre du mal à comprendre comment sauvegarder et restaurer une seule table.pg_dump en ignorant la séquence de table?

J'utilisé pgadmin3 pour sauvegarder une seule table dans ma base de données, afin de le copier sur un autre serveur. Lorsque je tente de faire un pg_restore sur le fichier, je reçois des messages d'erreur indiquant que la séquence n'existe pas:

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

Il semble que le fichier de vidage ne comprenait pas la séquence pour ma colonne incrémenter automatique. Comment puis-je l'inclure?

Répondre

12

dumping de la seule table - déchargera seule la table. Vous devez vider la séquence séparément en plus de la table.

Si vous ne connaissez pas votre séquence que vous pouvez lister avec \d yourtable dans psql. Vous verrez quelque chose dans la ligne de votre séquence est sur qui ressemble à: nextval('yourtable_id_seq'::regclass')

Ensuite, à partir de la ligne de commande, pgdump -t yourtable_id_seq

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

+0

Savez-vous si je peux spécifier une virgule après e -t drapeau? Comme ceci: pgdump -t matable, mytabl_id_seq – demersus

+0

Non, mais vous pouvez spécifier plusieurs commutateurs -t. Comme ceci: pgdump -t matable -t mytabl_id_seq – phord

Questions connexes