Re: Fwd: Problema dump y restauracion

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Paolo Lopez <murphyperu(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Fwd: Problema dump y restauracion
Date: 2005-10-26 16:05:39
Message-ID: 20051026160539.GF25503@surnet.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Paolo Lopez escribió:

Hola,

> - Lo del pg_dump -d o -D es lo mas explicito que le puedo dar al psql
> para restaurar una BD pero veo que es lento. Esto me funciona sin
> problemas. Todo OK.

Lo que puedes hacer para paliar la lentitud es encerrrarlo en bloques
BEGIN/COMMIT. Asi todos los insert se ejecutan en una sola transaccion,
y es mucho mas rapido. Pero observa que si uno solo falla, ninguno se
ejecutara. Por lo tanto, te puede convenir una solucion intermedia,
como poner BEGIN/COMMIT alrededor de los insert de cada tabla (por
ejemplo).

> - Cuando hago pg_dump -a de la base de datos original, la otra
> base de datos debe ser un clon de la original, porque si falta alguna
> tabla, la restauracion no se puede hacer. Y si a mano quito las
> sentencias COPY de las tablas que no existen en la nueva BD , pues el
> psql solo acepta el 1er COPY que encuentra en el archivo de dump, los
> otros los ignora. El archivo dump es sensitivo ante cualquier
> modificacion de el en forma manual.

No, esto no es cierto. El dump lo puedes modificar manualmente y si lo
haces correctamente, seguira funcionando. Lo que pasa es que si lo
haces mal, no va a funcionar. Entonces lo que tienes que hacer, es no
hacerlo mal.

> - Hicé pg_dump -a de la antigua BD y la trate de restaurar a la
> nueva BD que le faltaba 2 tablas, y en vez de solo mostrarme el psql
> errores en que no encontró dichas tablas , me empezo a mandar erores
> de que le son ilegibles los caracteres \N y \.(back slash y
> punto).

Lo que pasa es que los \N y demas son los comandos que vienen despues
del COPY. Pero si el COPY falla porque no existe la tabla, entonces te
arroja errores porque trata de procesar esos comandos, los cuales no
son validos fuera del entorno de COPY.

Creo que lo que mas te conviene a ti es hacer el respaldo con pg_dump
-Fc o -Ft y luego usar pg_restore -L/-l para hacer restauracion
selectiva de los datos que te interesan.

--
Alvaro Herrera Developer, http://www.PostgreSQL.org
"Coge la flor que hoy nace alegre, ufana. ¿Quién sabe si nacera otra mañana?"

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message nelson cancino 2005-10-26 16:26:13 Error de duplicacion
Previous Message Alvaro Herrera 2005-10-26 15:53:49 Re: Cerrar Conexiones II