Re: Copiar bases de datos postgres 7.3 a postgres 8.1

From: Luis Rodrigo Gallardo Cruz <rodrigo(at)nul-unu(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Copiar bases de datos postgres 7.3 a postgres 8.1
Date: 2005-11-10 18:50:58
Message-ID: 20051110185057.GG14751@ns0.nul-unu.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Thu, Nov 10, 2005 at 01:38:56PM -0300, Luis Sanhueza wrote:
> Tengo 2 servidores:
> postgres 7.3 en conectiva Linux, con direccion 130.10.10.4
> postgres 8.1 en CentOS 4.2, con direccion 130.10.10.7
>
> los 2 utilizan el puerto 5432, lo primero que hago en el servidor que
> contiene las bases actuales es un pg_dumpall > respaldo.bak Luego muevo el
> archivo que obtengo al servidor nuevo con postgres 8.1 y ejecuto psql -d
> postgres < respaldo.bak y empieza a decir que se violan llaves y se repite
> infinitamente commando \N no valido y al final de todo dice:
> ...
> comando \N no válido
> ERROR: error de sintaxis en o cerca de «9990907» en el carácter 1
> LINEA 1: 9990907 3845 11601 VSC

Vas a tener que darle una arreglada a mano a tu dump. Lo que está
pasando es que al tratar de cargar los datos no se cumplen las
restricciones de integridad. Eso hace que la transacción falle a la
mitad de un copy. Los demás errores son consecuencia de esto, por
ejemplo el 'comando \N no válido' es por que trata de leer la
siguiente liena del copy como si fuera una sentencia SQL.

- Puedes modificar el archivo del dump. Haz uno por cada base, en vez
del dumpall. Quita las sentencias de creación de llaves foraneas e
índices de donde están, justo después de la creación de las tablas y
ponlas al final. Así los datos se cargan sin verificar restricciones,
lo cual además es más rápido. Puedes también modificar el orden en que
se cargan los datos, pero no siempre es posible encontrar un orden
correcto, por que pueden haber dependencias circulares entre tablas.

- No se si esto sea muy recomendable (¿algún gurú que nos diga?), pero
puedes intentar hacer el dump con el pg_dump del 8.1 (Desde la 10.7
haces pg_dumpall -h 130.10.10.4 >respaldo.bak. Necesitas activar el
acceso a todas las bases via tcp para el usuario postgres en la 10.4
desde la 10.7) Eso lo va a generar con la nueva sintáxis, lo cual
probablemente evite por lo menos muchos warnings y posiblemente
elimine errores.

--
Rodrigo Gallardo

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2005-11-10 19:02:39 Re: [SQL] Como ejecutar una funcion insert en plpgsql....
Previous Message guillermo saez 2005-11-10 18:20:13 odbc