PDA

Ver la Versión Completa : Insertar 8 millones de registros en interbase...


nacho
07-02-2005, 21:43:36
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
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.