Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Insercion masiva desde Paradox a Firebird (https://www.clubdelphi.com/foros/showthread.php?t=77103)

MartinS 21-12-2011 16:28:31

Insercion masiva desde Paradox a Firebird
 
Hola gente...!!!
Tengo un pequeño gran problema. La idea es migrar una base de datos que se encuentra en Paradox a Firebird la que posee alrededor de 6500 socios. Hasta aqui todo bien, el tema es que esta base paradox tiene la foto de cada socio y por ende tarda una eternidad en pasar todos los datos. La pregunta es la siguiente: ¿Existe alguna forma de hacer una instruccion SQL o que componentes usar para insertar datos en forma masiva a firebird y que incluya una base de datos Paradox entre sus parametros?. No se si me explicado correctamente. Saludos

Casimiro Notevi 21-12-2011 18:43:46

No, no te has explicado correctamente :)

Por ejemplo:
Cita:

Empezado por MartinS
el tema es que esta base paradox tiene la foto de cada socio y por ende tarda una eternidad en pasar todos los datos

Qué tiene que ver el que tenga una foto con el que sea lento.

¿Y esa foto está dentro de la BD o está fuera como enlace?

MartinS 22-12-2011 11:33:42

Ups :D . La foto esta dentro de la base. El tema es que para realizar la migracion (si no existe otra forma) es ir recorriendo la tabla de paradox y enviando uno a uno a Firebird pero los primeros 15 o 20 los hace bien y de ahi en adelante cada vez peor. Temo que no va a terminar

ecfisa 22-12-2011 13:35:43

Hola Martín.

Sería bueno, para poder dar una mejor opinión, ver en líneas generales el código que utilizas para realizar el pasaje de datos.

Un saludo.

MartinS 22-12-2011 14:25:34

Hola Ecfisa:

El codigo que utilizo para hacer el paso de datos es el siguiente:
InterPres es la tabla paradox
IbSocios es la tabla firebird


Código Delphi [-]
  ProgressBar1.Max := InterPres.RecordCount; 
  InterPres.First;
  while Not InterPres.Eof do
  Begin
    Inc(i);
    ProgressBar1.Position := I;
    Application.ProcessMessages;
    IBSocios.Append;
    IBSociosID.AsInteger := InterPresId.AsInteger;
    IBSociosAPELLIDOS.AsString := InterPresApellidos.AsString;
    IBSociosNOMBRES.AsString := InterPresNombres.AsString;
    IbSociosFoto.Value := InterPresFoto.Value;
    ...
    ...
    IbSocios.Post;
    InterPres.Next;
  end;


Despues del final de InterPres hago el commit y tambien probe hacerlo cada 100 pero el resultado sigue siendo el mismo.

Luego descubri que la foto era lo que realmente hacia todo lento, asi que elimine esa instruccion del codigo anterior para cargar la base firebird y lo hizo bastante bien.
Ahora habia que agregarles la foto y utilice esto:


Código Delphi [-]
  InterPres.First;
  while Not InterPres.Eof do
  Begin
    Indice := InterPresId.AsInteger;
    IBSocios.Locate('Id',Indice,[]);
    IBSocios.Edit;
    IBSociosFOTO.Value := InterPresFoto.Value;
    IBSocios.Post;
    InterPres.Next;
  End;


Tambien lo hice mediante SQL con Update table pero no he logrado resultados.

Como he expresado en el mensaje anterior no seria problema que tarde 2 o 3 horas en hacerlo ya que seria una vez y nunca mas pero tengo mis dudas si va a terminar de pasar los 6500 o explotara la memoria en el intento :(

Gracias por las respuestas.


A modo de referencia: Ecfisa: nos separan solo 150 km de distancia... yo en villa cacique (pdo Benito Juarez) :cool:

ecfisa 22-12-2011 14:55:10

Cita:

A modo de referencia: Ecfisa: nos separan solo 150 km de distancia... yo en villa cacique (pdo Benito Juarez)
¡ Mirá vós !, Me hacía a Villa Cacique más al sur. No sé, me lo imaginaba en Rio Negro... queda claro que la geografía no es mi fuerte :D

Pero si estamos a un paso... ahora mismo lo voy a ubicar en el partido de B. Juarez para desasnarme.

Un saludo.:)


La franja horaria es GMT +2. Ahora son las 01:27:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi