Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 28-05-2010
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Hola santiago14, yo tambien tenía un inconveniente de ese tipo y mi solución fue sencilla.

si me cuentas qué componentes utilizas podría ayudarte.

GustavoCruz
Responder Con Cita
  #22  
Antiguo 28-05-2010
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Cita:
Empezado por GustavoCruz Ver Mensaje
Hola santiago14, yo tambien tenía un inconveniente de ese tipo y mi solución fue sencilla.

si me cuentas qué componentes utilizas podría ayudarte.

GustavoCruz
Gustavo, gracias por responder.
Utilizo Delphi 7, Firebird 1.5 (estoy pasándome al 2.1), MDO la última versión que hay.
Para las grillas uso StringGrid y NextGrid.

¿Necesitas saber algo mas?
Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #23  
Antiguo 01-09-2010
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Cita:
Empezado por GustavoCruz Ver Mensaje
Hola santiago14, yo tambien tenía un inconveniente de ese tipo y mi solución fue sencilla.

si me cuentas qué componentes utilizas podría ayudarte.

GustavoCruz
Gustavo, quedaste en contestarme... Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #24  
Antiguo 12-03-2011
g_ferrada g_ferrada is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 13
Poder: 0
g_ferrada Va por buen camino
Bueno, ya me di cuenta que este tema se agotó hace un rato, pero me sirvió para lo que estoy haciendo: cargo una lista de 3.000.000 de códigos de 8 caracteres contenidos en un archivo txt. Cada código es una línea que termina con CR LF. Leer el archivo lo hice con TFileStream, y eso funciona a la perfección. Mi problema ha sido la inserción de cada código en una base Firebird, usando las ZLib (Delphi 7), con tres campos, el código mismo (como llave única), un entero de estado, y un entero identificador (correlativo).
Al principio use un ZTable y AppendRecord dentro de un bucle <for i:= 1 to TXT.Size> ... funcionaba bien con una prueba de 1000 registros, pero con 100.000 ya empezaba a inquietar al más paciente, ni les digo con tres millones: medí como dos horas, y aún no terminaba.

Buscando otros métodos dí con este blog y el insert masivo. Mi base de datos es Firebird 2.1 así que utilicé la forma

EXECUTE BLOCK AS BEGIN
INSERT INTO table1 (col1, col2) VALUES (2, 'two');
INSERT INTO table1 (col1, col2) VALUES (4, 'four');
INSERT INTO table1 (col1, col2) VALUES (5, 'five');
END

Reemplacé el ZTable por ZQuery, agregando un INSERT en el SQL.Text por cada registro
La única dificultad es que el bloque sólo acepta 255 INSERT, así que en mi bucle ejecuto el query cada 200 registros, entonces reinicio el SQL.Text. O sea, inserto los registros en bloques de 200. Con esto logré reducir el tiempo de a 25 minutos... no será una maravilla, pero es bastante mejor de lo que tenía.

Decidí escribir este post, por si a alguien le sirve de utilidad. Y si saben como hacerlo todavía mejor, agradecería una sugerencia.

Saludos
Responder Con Cita
  #25  
Antiguo 12-03-2011
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Cita:
Empezado por g_ferrada Ver Mensaje
Buscando otros métodos dí con este blog y el insert masivo. Mi base de datos es Firebird 2.1 así que utilicé la forma

EXECUTE BLOCK AS BEGIN
INSERT INTO table1 (col1, col2) VALUES (2, 'two');
INSERT INTO table1 (col1, col2) VALUES (4, 'four');
INSERT INTO table1 (col1, col2) VALUES (5, 'five');
END

Reemplacé el ZTable por ZQuery, agregando un INSERT en el SQL.Text por cada registro
La única dificultad es que el bloque sólo acepta 255 INSERT, así que en mi bucle ejecuto el query cada 200 registros, entonces reinicio el SQL.Text. O sea, inserto los registros en bloques de 200. Con esto logré reducir el tiempo de a 25 minutos... no será una maravilla, pero es bastante mejor de lo que tenía.

Decidí escribir este post, por si a alguien le sirve de utilidad. Y si saben como hacerlo todavía mejor, agradecería una sugerencia.

Saludos
Está bueno el aporte, habría que ver la manera de mejorar el asunto de las inserciones de a 200 registros.
Tal vez la versión 2.5 de Firebird tenga alguna herramienta que ayude en el caso.
Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
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
Insert masivo en firebird santiago14 Firebird e Interbase 2 24-05-2010 02:50:29
Envio masivo de mensajes via web supermanpy Varios 5 08-05-2010 19:00:26
Update Masivo... BlueSteel SQL 9 30-10-2007 17:11:59
upload masivo kayetano PHP 12 06-12-2006 16:45:39
Traspaso masivo de datos .DBF eibarra Conexión con bases de datos 1 06-04-2005 16:06:59


La franja horaria es GMT +2. Ahora son las 16:37:16.


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