2011-01-05 24 views
9

He estado jugando con PostgreSQL últimamente, y tengo problemas para entender cómo hacer una copia de seguridad y restaurar una sola tabla.pg_dump ignorando la secuencia de la tabla?

Utilicé pgadmin3 para hacer una copia de seguridad de una sola tabla en mi base de datos, para copiarla en un servidor diferente. Cuando intento hacer una pg_restore en el archivo, recibo mensajes de error diciendo que la secuencia no existe:

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

Parece que el archivo de volcado no incluía la secuencia automática para mi columna de incremento. ¿Cómo puedo incluirlo?

Respuesta

12

descargando solo por tabla: solo volcará la tabla. Debe volcar la secuencia por separado además de la tabla.

Si no conoce su secuencia, puede listarla con \d yourtable en psql. Se le ve algo en la fila de la secuencia es el que se parece a: nextval('yourtable_id_seq'::regclass')

Entonces, desde la línea de comandos, pgdump -t yourtable_id_seq

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

+0

sabes si puedo especificar una coma después de -t XX? De esta manera: pgdump -t mytable, mytabl_id_seq – demersus

+0

No, pero puede especificar múltiples -t conmutadores. De esta manera: pgdump -t mytable -t mytabl_id_seq – phord

Cuestiones relacionadas