Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Insertar 8 millones de registros en interbase... (https://www.clubdelphi.com/foros/showthread.php?t=18278)

nacho 07-02-2005 21:43:36

Insertar 8 millones de registros en interbase...
 
Necesito insertar un poco más de 8 millones de registros en Interbase desde delphi, pero solo inserta 300,000 y genera un error de sobrecarga, ¿cómo puedo insertarlos?

marcoszorrilla 07-02-2005 21:45:25

Has probado a hacerlo en tramos, por ejemplo cada 100.000 parar, cerrar la tabla, terminar todas las transaciones y luego recomenzar.


Un Saludo.

nacho 07-02-2005 21:47:13

cada 100,000 termino la conexion y genero una nueva para liberar espacio, pero sigue haciendo lo mismo.

nacho 07-02-2005 22:05:09

cada 100,000 termino la conexion y genero una nueva para liberar espacio, pero sigue haciendo lo mismo.

sercornejov 08-02-2005 00:31:04

que clase de datos está tratando de guardar?

es para saber cuanto debe pesar la info...

Sergio

nacho 08-02-2005 01:37:43

Son tipo texto, se esta convirtiendo un archivo de texto sin formato a una Base de Datos, el archivo actual pesa alrededor de 500 Mb.

Casimiro Notevi 08-02-2005 08:54:31

pues, por qué no explicas qué es lo que haces, qué componentes usas, cómo haces esas insersiones, qué tipos de campos, qué tipos de datos, exactamente qué clase de archivo estás metiendo en la base de datos, por qué serán 8 millones de registros, muéstranos el código de lo que haces, danos un "poco" más de información...
En caso contrario es un poquito dificil llegar a ninguna conclusión.
:)

tefots 08-02-2005 09:50:10

hasces las inserciones usando tables ?, tal vez ahi este el problema.

te aconsejo que uses tibquerys , haciendo un starttransaction y un endtransaction cada vez.

Ibtransaction1.startransaction;
try
Tibquery1.execsql;
Finally
Ibtransaction1.CommitRetaining;
End;

SCORDOBA 08-02-2005 16:09:49

Pon la excepcion que se produce.

No hay problema para insertar millones de registros en Interbase, solo que no pudes hacer una transacion que lleve los 8millones de inserts, la tactica es hacer un contador de inserciones y hacer un commit cada 1000 inserciones

start transaction
insertar 1000
commit (ojo no commitretaining)

y esto lo haces hasta que acabes de recorrer el archivo que quieres insertar.

Saludos

sercornejov 14-02-2005 14:27:34

Scordoba tiene toda la razón. Es necesario que como lo hagas le permitas hacer COMMIT cada 1000 registros.

Julià T. 14-02-2005 23:03:20

a parte de utilizar querys, y guardar (commit) cada 1000-10000 registros, también seria aconsejable, cada vez que hagas el commit, cerrar la consulta y abrir una nueva de tal manera que no contenga ningún registro, para no volver a tener todos los datos.

rastafarey 17-02-2005 21:34:01

No se
 
Y por que no usan un script de 100.000 o mas o menos que de esta menera se ejecuta mas rapido y en un solo paso.


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

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