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?
|
Has probado a hacerlo en tramos, por ejemplo cada 100.000 parar, cerrar la tabla, terminar todas las transaciones y luego recomenzar.
Un Saludo. |
cada 100,000 termino la conexion y genero una nueva para liberar espacio, pero sigue haciendo lo mismo.
|
cada 100,000 termino la conexion y genero una nueva para liberar espacio, pero sigue haciendo lo mismo.
|
que clase de datos está tratando de guardar?
es para saber cuanto debe pesar la info... Sergio |
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.
|
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. :) |
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; |
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 |
Scordoba tiene toda la razón. Es necesario que como lo hagas le permitas hacer COMMIT cada 1000 registros.
|
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.
|
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