Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

Next:From: nelson cancinoDate: 2005-10-26 16:26:13
Subject: Error de duplicacion
Previous:From: Alvaro HerreraDate: 2005-10-26 15:53:49
Subject: Re: Cerrar Conexiones II

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group