Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-05-2016
rocksoft rocksoft is offline
Miembro
NULL
 
Registrado: may 2016
Posts: 71
Poder: 9
rocksoft Va por buen camino
Buenas con todos,

Cita:
Empezado por adebonis Ver Mensaje
Hola.
Las tablas DBIsam tienen la función ImportTable. ¿La has probado?
Adolfo de Bonis.
Si ya lo probe, pero no es una opcion ya que no valida la informacion y a la mas minima salta un error, ya que los datos a importar no son de fiar, de vez en cuando tienen un campo mas, o un delimitador doble etc..

Pero les comento de que 1500 por segundo son muy lentos, me puse a analizar proceso por proceso y midiendo paso por paso los tiempos de resultado, la parte lenta el desgloce del string en sus respectivos campos, usaba un stringlist con delimitador, ahora con un array es bastante mas rapido.

Otros dos puntos que relentizaba el proceso era en contador de registros leidos y la barra de avance (aunque paresca una tontaria cuestan tiempo) en 10.000 registros hacen la diferencia de 1-3 segundos.

Ahora estoy importando unos 14.000 registros por segundo, lo que tardaba importar 10.7 Millones de registros unas 3 horas, ahora tarda unos 15 min.

bueno les dejo el spliter por si alguien le sirve, no soy el autor lo encontre buscando :

Código Delphi [-]
function Split00(const Texto, Delimitador: string): TSarray;
var
  i: integer;
  Len: integer;
  PosStart: integer;
  PosDel: integer;
begin
  i := 0;
  SetLength(result, 1);
  Len := Length(Delimitador);
  PosStart := 1;
  PosDel := Pos(Delimitador, Texto);
  while PosDel > 0 do
  begin
    result[i] := Copy(Texto, PosStart, PosDel - PosStart);
    PosStart := PosDel + Len;
    PosDel := Pos(Delimitador, Texto, PosStart);
    Inc(i);
    SetLength(result, i + 1);
  end;
  result[i] := Copy(Texto, PosStart, Length(Texto));
end;
Responder Con Cita
  #2  
Antiguo 20-05-2016
bitbow bitbow is offline
Miembro
 
Registrado: jul 2006
Posts: 366
Poder: 18
bitbow Va camino a la fama
Aplausos para este compañero, es una pena que el SplitString sea tan lento, se me olvido mencionarte eso en el pos anterior, yo igual hice ese cambio y el tiempo de proceso disminuye bastante.

Una duda, como estas insertando los registros? uno por uno o por bloques?

Saludos.
__________________
¡Ni como ayudarte Niño!!
bitbow
Responder Con Cita
  #3  
Antiguo 21-05-2016
rocksoft rocksoft is offline
Miembro
NULL
 
Registrado: may 2016
Posts: 71
Poder: 9
rocksoft Va por buen camino
Hola bitbow,

probe las dos variantes y por bloques en sql de 1000 en 1000 iba bastante mas lento que de uno en uno, ya que tengo los datos directos para insertar, en bloques los tengo que ir guardando en y volver a leer. Ahora escribiendo lo que no probe es usando el comando prepare, podria ser ayude, pero ya no voy a cambiar nada mas, al menos por el momento.

Ahora descargando el archivo, descomprimir, leer linea por linea e importarla acabo en 15-20 min
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Importacion desde Excel oscarac Varios 1 01-03-2011 17:23:12
ayuda con importacion de datos zanyodark Conexión con bases de datos 1 08-11-2007 09:45:23
Importacion de access por medio de dts mierda SQL 2 05-04-2007 09:24:32
importacion de datos a DB uper Firebird e Interbase 2 15-04-2005 23:41:06
error importación a oracle9 pablo666 Oracle 0 02-02-2005 11:47:50


La franja horaria es GMT +2. Ahora son las 08:47:52.


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
Copyright 1996-2007 Club Delphi