FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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!!! |
#2
|
||||
|
||||
has probado usar ClientDataset ?
__________________
Dulce Regalo que Satanas manda para mi..... |
#3
|
||||
|
||||
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. |
#4
|
|||
|
|||
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 Última edición por wal_laplata fecha: 06-07-2011 a las 20:47:42. |
#5
|
|||
|
|||
Cita:
|
#6
|
|||
|
|||
No que diferencia tiene?? no la he usado. |
#7
|
||||
|
||||
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...
|
#8
|
|||
|
|||
Última edición por ecfisa fecha: 06-07-2011 a las 21:37:43. Razón: ETIQUETAS [DELPHI] [/DELPHI] |
#9
|
||||
|
||||
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.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#10
|
|||
|
|||
Este es el Formato
Cita:
|
#11
|
||||
|
||||
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?. |
#12
|
|||
|
|||
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... |
#13
|
|||
|
|||
El Archivo es de 85 mgb, por lo de la memoria vos decis que lo cargue en un ttable?
|
#14
|
|||
|
|||
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!! |
#15
|
|||
|
|||
Hola...
¿Es necesario que cargues la información en un grid? Saludos... |
#16
|
|||
|
|||
No no solamente la ponia para ver como armaba el contenido ... y supongo que eso es lo que me tilda todo el sistema.
|
#17
|
||||
|
||||
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.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 07-07-2011 a las 22:46:54. |
#18
|
|||
|
|||
Cita:
SALUDOS!!! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
ayuda copiar datos de una tabla a otra | Rofocale | Varios | 1 | 18-05-2011 03:39:40 |
Ayuda insertar cadena en otra ? | Coco_jac | Varios | 4 | 14-12-2005 21:37:46 |
necesito ayuda para pasar registros a otra tabla | ddd_ddd | Conexión con bases de datos | 2 | 09-09-2005 20:33:41 |
ayuda para enlazar con otra tabla | Debian | Conexión con bases de datos | 1 | 24-03-2005 16:48:28 |
Como puedo tabajar de otra forma un DBGrid, Ayuda urgente | danytorres | Varios | 7 | 18-07-2003 21:24:02 |
|