![]() |
Ayuda otra vez!!
Disculpen pero despues de lograr leer los datos de un txt me encuentro con el problema q el txt tiene mas de 3000000 de lineas !!!! o sea cada vez que cargo en un dbgrid el sistemita se me cuelga.
Queria saber si alguien sabe alguna componente para cargar tantas lineas y mostrarlas en una grilla. lo que tengo es un RxMemoryData donde cargo las lineas que levanto del txt. tengo un Datasouce conectado con un dbgrid el cual muestra lo que cargue en el RxMemoryData. Gracias!!! |
has probado usar ClientDataset ?
|
Por favor, recuerda poner títulos descriptivos a tus preguntas, "ayuda otra vez!!" no es ningún título descriptivo. No olvides leer nuestra guía de estilo. Gracias.
Cita:
Yo uso rxmemorydata y kbmmemtable con muchos registros, pero nunca se me ocurriría cargar en memoria tantos registros. Bueno, mentira, sí lo hago en algunas ocasiones, pero con muy, muy, muy pocos campos. No es lo mismo tres millones de registros con una tabla de un campo... que 3 millones de registros con una tabla de 20 campos. |
Hola Casimiro, soy compañero de Pelikno y te agradezco la respuesta. El tema es que son mas de 5 millones de registros (lista de proveedores de la AFIP en todo el pais) y cada registro contiene 6 campos (cuit como principal y mas extenso, y el resto de los campos son estados de 2 o 1 caracter cada uno)
ejemplo : cuit ganancia iva sociedad monotributo empleador 20201215749 NI NI NI N N el tema que acortamos el archivo a 1000000 y tambien se re cuelga. la idea es levantar los datos que estan en un texto plano y pasarlo a SQL, para poder de esa forma, realizar la actualizacion de los estados de los proveedores que posee el sistema con los de la AFIP. Aclaro que el sistema trabaja con base de datos SQL, por eso queremos unificar todo. Porque un proveedor puede cambiar su situacion frente a la AFIP, pasar de monotributista a responsable inscripto, por ejemplo |
Cita:
|
Cita:
No que diferencia tiene?? no la he usado. |
De todas formas si no pones el código fuente que lo veamos, no nos dice si sale algún error ni cual es, etc...
|
|
Hola wal_laplata.
Por favor cuando pongas código Delphi encerralo entre las etiquetas [delphi] codigo [/delphi] para una mejor legibilidad. Una pregunta: ¿ Cual es la longitud exácta que ocupa cada registro en el formato texto ? Es decir en referencia a lo dicho más arriba: Cita:
Saludos. |
Entonces cuento 21 caracteres más cr+lf = 23 por línea.
Si son 5 millones de registros hacen: 115.000.000 bytes= 109 MB. No es que sea algo muy abrumador, aunque me pregunto por qué lo cargas en memoria, ¿por qué no usas una tabla para ello?. |
Otra cosa que podrías hacer es ir leyendo los datos en bloques, o sea, lees primero unas 1,000 líneas (o 10,000) y las procesas, luego lees otro bloque de n líneas y lo procesas y así hasta finalizar...
Saludos... |
Cita:
|
este es el codigo, el tema que tego que actualizar mi base con este txt, como me recomiendan que la cargue o donde, my base es sqlserver. Gracias!! |
Hola...
¿Es necesario que cargues la información en un grid? Saludos... |
Cita:
|
Hola pelikno.
En el código que adjuntas (#14), para recorrer 100000 registros realiza 100000 ciclos de lectura, que es muchisimo mejor que el primer código que leia caracter a caracter(#8), ya que en ese caso eran 100000 x 22 lecturas. Pero creo que se puede optimizar mucho más el código de lectura en bloque. No tengo acceso a los datos y puede que tengas que cambiar la cantidad de caracteres por registro o algún detalle que se me escape por no tener el archivo origen o el formato requerido. En este caso, con 100000 registros sólo realiza 7 ciclos en 00:00:05:30 (en mi equipo). Como no tengo ni conozco el RxMemoryData, usé un TClientDataSet para la prueba. Lo único que tenés que hacer es crear los campos persistentes en él respetando los nombres y el código debería funcionarte. Cualquier dificultad te adjunto el ejemplo con el generador de datos. Saludos. |
Cita:
SALUDOS!!! |
| La franja horaria es GMT +2. Ahora son las 05:19:15. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi