Re: cargar miles de registros en forma recurrente

From: Rodriguez Fernando <rodriguez(at)ort(dot)edu(dot)uy>
To: pablo <pabloste(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: cargar miles de registros en forma recurrente
Date: 2007-09-04 15:27:49
Message-ID: 46DD7975.3060903@ort.edu.uy
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola, hace poco hice que oracle generara un archivo con los datos de la
tabla al disparar el trigger, quizas te sirva. El separador es | en tu
caso podes generar la linea de insert, te mando mi engendro

Create or replace trigger creador.tr_baja_persona
BEFORE DELETE ON creador.T_PERSONA
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
declare
archivo utl_file.FILE_TYPE;
buffer VARCHAR(1000);
cabezal VARCHAR(1000);
begin
cabezal:='Codigo_persona|Id_funcionario|Codigo_vigencia|PRIMER_APELLIDO|SEGUNDO_APELLIDO|PRIMER_NOMBRE|SEGUNDO_NOMBRE|DIRECCION|';
cabezal:=cabezal||'CODIGO_POSTAL|TELEFONO1|TELEFONO2|EMAIL|documento|password|funcionario_activo_persona|tipo_operacion|numero_alumno_viejo|';
cabezal:=cabezal||'usuario_modificacion|fecha_modificacion|hora_modificacion';
buffer:=:old.Codigo_persona||'|'||:old.Id_funcionario||'|'||:old.Codigo_vigencia||'|'||trim(:old.PRIMER_APELLIDO)||'|';
buffer:=buffer||trim(:old.SEGUNDO_APELLIDO)||'|'||trim(:old.PRIMER_NOMBRE)||'|'||trim(:old.SEGUNDO_NOMBRE)||'|'||trim(:old.DIRECCION)||'|';
buffer:=buffer||trim(:old.CODIGO_POSTAL)||'|'||trim(:old.TELEFONO1)||'|'||trim(:old.TELEFONO2)||'|'||trim(:old.EMAIL)||'|';
buffer:=buffer||trim(:old.documento)||'|'||trim(:old.password)||'|'||:old.FUNCIONARIO_ACTIVO_PERSONA||'|B|'||:old.numero_alumno_viejo||'|';
archivo:=UTL_FILE.FOPEN('/home/oracle/movPersona',:new.codigo_persona||'_'||to_char(sysdate,'yyyymmdd')||to_char(sysdate,'hh24miss')||'.txt','W',1000);
UTL_FILE.PUT_LINE (archivo,cabezal);
UTL_FILE.PUT_LINE (archivo,buffer);
UTL_FILE.FCLOSE (archivo);
end;

saludos FErnando
pablo wrote:
> Fernando, las version es: oracle=10g, postgresql=8.
>
> Sobre lo del trigger no me sirve porque no es en tiempo real ambas tablas.
> se trabaja sobre oracle. Una vez terminado se produce necesario enviar
> los datos a una BD postgreql que está en otro lado.
> creo que generar un archivo es lo más lógico y recibirlo en postgresql
> y ver alguna de las funciones que me comentaron.
>
> Saludos
>
>
>
>
> ---------- Forwarded message ----------
> From: *Rodriguez Fernando* < rodriguez(at)ort(dot)edu(dot)uy
> <mailto:rodriguez(at)ort(dot)edu(dot)uy>>
> Date: 04-sep-2007 8:33
> Subject: Re: [pgsql-es-ayuda] cargar miles de registros en forma
> recurrente
> To: pablo < pabloste(at)gmail(dot)com <mailto:pabloste(at)gmail(dot)com>>
> Cc: pgsql-es-ayuda(at)postgresql(dot)org <mailto:pgsql-es-ayuda(at)postgresql(dot)org>
>
> Hace un trigger en Oracle que en cada update, delete, insert, haga lo
> mismo en posgres.
> La funcion Oracle seria un sencillo programa java que realiza la tarea.
> Que versión de Oracle usas?
>
> Saludos Fernando
>
> pablo wrote:
> > Hola
> >
> > debo pasar aprox 200 mil registros de un motor de BD a postgresql.
> > estos 200 mil registros podrían cambiar constantemente,
> > actualmente borro la tabla y a través de una aplicación por php hace
> > un insert en la bd.
> > cada vez el proceso es el mismo: borra los datos, vuelvo a cargar.
> > ya que hacer update es muchísimo más lento que hacer insert.
> >
> > existirá algún método más rápido. he estado investigando, en oracle
> > existe el load data que se hace a nivel de BD.
> > en postgresql cuál será un buen método para esto?
> >
> > una bd (oracle) está en un servidor y la bd en postgresql está en otro
> > servidor.
> >
> > saludos

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Edwin Quijada 2007-09-04 16:34:32 Re: backup bd con pg_dump
Previous Message Alvaro Herrera 2007-09-04 15:23:38 Re: backup bd con pg_dump