Re: Carga de Datos en base a COPY/INSERTS

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Luis D(dot) García <ldgarc(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Carga de Datos en base a COPY/INSERTS
Date: 2008-07-30 19:25:31
Message-ID: 20080730192531.GD3977@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Luis D. García escribió:

> Lo que se me ocurrió utilizar para esto son tablas auxiliares que sean
> copias de las originales, pero que no posean restricciones de claves
> primarias. En estas tablas auxiliares se hace la carga de los datos de los
> CSV por medio de un COPY y se extraen luego por medio del pg_dump (con la
> opciones -d -a para la extracción únicamente de los datos y en base a
> inserts). Luego por medio del mecanismo "sed" se cambian los nombres de las
> tablas en el archivo resultante del dump, de manera que los INSERTs se hagan
> en las tablas originales.
>
> Ahora, existe una manera más efectiva de llevar a cabo este procedimiento?

Claro, puedes hacer algo como

begin;
lock table tabla_principal;
insert into tabla_principal
select * from tabla_temporal where not exists (registro en tabla_principal)
commit;

El LOCK TABLE es necesario para el caso en que un registro se inserte en
la tabla principal mientras este proceso esta funcionando.

--
Alvaro Herrera http://www.PlanetPostgreSQL.org/
"Endurecerse, pero jamás perder la ternura" (E. Guevara)

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Luis D. García 2008-07-30 19:48:07 Re: Carga de Datos en base a COPY/INSERTS
Previous Message Luis D. García 2008-07-30 19:16:47 Carga de Datos en base a COPY/INSERTS