![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Memoria RAM = 16 GB
Windows 10 SO 64bits Disco SSD 1TB Pero no almaceno los registros en mi aplicació, ya que una vez generados los guardo en la base de datos. |
#2
|
||||
|
||||
Si están en memoria en un "TRecord" y dices que son 500 GB... ¿no serán 500 MB?
Es que con 500 GB ni siquiera puedes usar ese disco de 1 TB Bueno, a lo que vamos, ahora sí lo tenemos bastante claro para ayudar ![]() Y ya digo, con IBX. Dentro de un rato preparo un simple código para lo que quieres. |
#3
|
|||
|
|||
Muchísimas gracias, ya que nunca he trabajado con InterBase.
|
#4
|
|||
|
|||
En memoria sólo tengo un Record de 80Byte.
Éste es el que debo generar (siempre el mismo) y guardar en la DB. Cuando termine el proceso, calculo que la DB ocupará 500GB. |
#5
|
||||
|
||||
Vamos centrando el tiro...
Cuantos registros/filas hay en tu csv? Cuanto tardas en crear otro csv con la información preparada? Porqué lo guardas en memoria? Puedes procesar cada registro e insertarlo de la misma? asi te ahorras duplicar la info. Poner una traza por si te falla para volver a cargar desde donde falla. Insertar 100.000 registros no puede demorar más de 3 minutos. Por cada fila del csv lanzas una SQL de INSERT tal y como te han indicado desde las primeras respuestas. Abro el csv. por cada fila que lea: proceso o pongo la información en formato correcto. hago INSERT de ese registro. Si la insert la tienes parametrizada, tarda menos, es decir, parametro1 = valor1, parametro2= valor2, etc -> SqlInsert.Open; Creo que era asñi, ya no recuerdo la sintaxis leo siguiente fila hasta acabar
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#6
|
|||
|
|||
Michas gracias, creo que el problema era ADO, ahora lo estoy preparando para utilizar InteBase.
Lo primero que he observado es que trabaja directamente sobre la DB sin OCDB, me imagino que esto ya es un progreso. Cuando haya probado el sistema con InterBase, hago un post. ( posiblemente mañana, porque ahora tengo que salir) Repito muchas gracias. |
#7
|
||||
|
||||
Te dejo un ejemplo que funciona en Delphi 6 con los componentes Interbase.
La base de datos es Firebird 2.5 Es un bucle de 10.000 inserciones que se repite 10 veces (100.000 inserciones). Este es el log (unos 30 segundos). Es importante en las inserciones masivas no hacer commit por cada registro. En el ejemplo se realizan cada 10.000 inserciones. Debes ver cuál es el mejor intervalo para tus datos. Código:
Log: 15:48:49 Inicio 15:48:52 Bucle 0 15:48:56 Bucle 1 15:48:59 Bucle 2 15:49:02 Bucle 3 15:49:05 Bucle 4 15:49:08 Bucle 5 15:49:11 Bucle 6 15:49:14 Bucle 7 15:49:17 Bucle 8 15:49:20 Bucle 9 15:49:20 Fin El SQL para el INSERT también deberás modificarlo según tus necesidades...
|
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Insercion masiva desde Paradox a Firebird | MartinS | SQL | 5 | 22-12-2011 14:55:10 |
insercion masiva | Alfredo | Firebird e Interbase | 3 | 12-11-2008 20:34:46 |
Insercion masiva de una BD a otra BD | oscjae | Firebird e Interbase | 5 | 15-12-2006 20:25:49 |
Insercion masiva de registros MUY LENTA | Balda | Firebird e Interbase | 10 | 24-03-2004 21:40:21 |
Inserción masiva en MySQL | Morfo | MySQL | 3 | 09-01-2004 18:05:33 |
![]() |
|