Estimados, tengo que parsear un archivo de texto de 3.5 gigas (contiene 65 millones de registros) y obtener cierta información de él. Que me recomiendan para leerlo?
Gracias!
Rubén Duarte
Con la informacion que nos das la respuesta seria empezar a leer desde el principio hasta llegar al final.No obstante, supongo que tendras algunas otras restricciones, por ejemplo, que el proceso de lectura no tarde dos semanas :-)Podras pasarnos mas informacion? por ejemplo: la longitud de registro es constante? tiene algun orden especifico? en que entorno funcionaria este proceso (servicio windows, aplicacion de escritorio, aplicacion web, etc)? tenes limites de tiempo para levantar la informacion?
----------------------------------
Carlos Peix2011/5/14 Rubén Duarte <ruben...@hydsolutions.com.ar>
Estimados, tengo que parsear un archivo de texto de 3.5 gigas (contiene 65 millones de registros) y obtener cierta información de él. Que me recomiendan para leerlo?
Gracias!
Rubén Duarte
Hola Rubén,
Una vez hice algo parecido, no con un archivo tan grande, y opte por crear una tabla en una base de datos donde guardaba los datos que necesitaba, mas el registro original, por si había algún error al leer el registro, por ej. error de parseo. Luego podes manejar los datos de la manera que quieras.
El problema que tenes vos es el tamaño del archivo que te crearía una base un poco grande, no se cuál es tu situación, pero hoy dia creo que el espacio en disco no es una limitación. Otro punto es ver si te aloca toda la memoria de un saque, alguno sabe?
Saludos,
Alejandro
De: c#@mug.org.ar [mailto:c#@mug.org.ar]
En nombre de Rubén Duarte
Enviado el: sábado, 14 de mayo de 2011 08:55 p.m.
Para: Ramos, Alejandro
Asunto: [c#] Leer archivo grande txt
Este es un correo Entrante desde Internet. No podemos autentificar su remitente.
Trátese esta información con discreción. Seguridad Informática-Molinos Rio de la Plata.
Estimados, tengo que parsear un archivo de texto de 3.5 gigas (contiene 65 millones de registros) y obtener cierta información de él. Que me recomiendan para leerlo?
Gracias!
Rubén Duarte
Así mismo como dice Alejandro lo tuve que hacer alguna vez, insertar en base de datos lo que se parseaba y a la par el registro original. Por velocidad, la única forma satisfactoria era procesar el archivo directamente desde el motor con un procedimiento almacenado. Así que tu mejor opción también puede depender del destino de los datos.
Cristian.
Hola!, como es el procedimien to de baja de las listas?
Bueno, gracias a todos por las respuestas, en principio, como pidió Carlos, doy más detalles sobre el tema:
Los campos están separados por comas, vienen 4 campos, y algunos pueden no estar informados
(ej, ZD08JN10623407310,,20140427,975436-001-01,PAL2000H-TTT-GB-XZ)
El primer registro del archivo indica “HEADER,65237420,,,” (el numero es la cantidad de registros con datos)
La aplicación es una aplicación Windows, c#, sql server 2008, pero mi idea es que el usuario que va a ingresar este archivo al sistema, primero lo procese en forma local, (quizás podría incorporar los datos a un sql local, primero), luego de leer la información el usuario debería tener la posibilidad de poder filtrar los datos de acuerdo a cierto group by por alguna de las columnas y en ese filtrado, eliminar unos cuantos millones de registros que en la sucursal Argentina no interesan, para luego incorporar a la base Sql del servidor los registros que sí interesan. Pero mis dudan son, que justamente esta lectura no tarde horas y horas o que no colapse la memoria del equipo mientras este leyendo el archivo, por eso no quiero parsearlo en memoria.
De: c#@mug.org.ar [mailto:c#@mug.org.ar] En nombre de Cristian C. Bittel
Enviado el: Lunes, 16 de Mayo de 2011 11:27
Para: ruben...@hydsolutions.com.ar
Asunto: [c#] Leer archivo grande txt
Así mismo como dice Alejandro lo tuve que hacer alguna vez, insertar en base de datos lo que se parseaba y a la par el registro original. Por velocidad, la única forma satisfactoria era procesar el archivo directamente desde el motor con un procedimiento almacenado. Así que tu mejor opción también puede depender del destino de los datos.
Cristian.
Hola Ruben,
Creo que lo mas razonable es establecer alguna linea de base para empezar a analizar opciones. Sugiero que hagas una prueba con cada una de las herramientas ya construidas que te han recomendado.
Luego, si los tiempos son inaceptables y no hay maneras de mejorarlos, podemos darte una mano con un procesador hecho a mano.
Abrazo
----------------------------------
Carlos Peix
2011/5/16 Rub�n Duarte <ruben...@hydsolutions.com.ar>
Bueno, gracias a todos por las respuestas, en principio, como pidi� Carlos, doy m�s detalles sobre el tema:
Los campos est�n separados por comas, vienen 4 campos, y algunos pueden no estar informados
(ej, ZD08JN10623407310,,20140427,975436-001-01,PAL2000H-TTT-GB-XZ)
El primer registro del archivo indica �HEADER,65237420,,,� (el numero es la cantidad de registros con datos)
La aplicaci�n es una aplicaci�n Windows, c#, sql server 2008, pero mi idea es que el usuario que va a ingresar este archivo al sistema, primero lo procese en forma local, (quiz�s podr�a incorporar los datos a un sql local, primero), luego de leer la informaci�n el usuario deber�a tener la posibilidad de poder filtrar los datos de acuerdo a cierto group by por alguna de las columnas y en ese filtrado, eliminar unos cuantos millones de registros que en la sucursal Argentina no interesan, para luego incorporar a la base Sql del servidor los registros que s� interesan. Pero mis dudan son, que justamente esta lectura no tarde horas y horas o que no colapse la memoria del equipo mientras este leyendo el archivo, por eso no quiero parsearlo en memoria.
�
�
�
De: c#@mug.org.ar [mailto:c#@mug.org.ar] En nombre de Cristian C. Bittel
Enviado el: Lunes, 16 de Mayo de 2011 11:27
Para: ruben...@hydsolutions.com.ar
Asunto: [c#] Leer archivo grande txt
�
As� mismo como dice Alejandro lo tuve que hacer alguna vez, insertar en base de datos lo que se parseaba y a la par el registro original. Por velocidad, la �nica forma satisfactoria era procesar el archivo directamente desde el motor con un procedimiento almacenado. As� que tu mejor opci�n tambi�n puede depender del destino de los datos.
�
Cristian.
�
De: c#@mug.org.ar [mailto:c#@mug.org.ar] En nombre de Ramos, Alejandro
Enviado el: lunes, 16 de mayo de 2011 11:17
Para: cristi...@yahoo.com.ar
Asunto: [c#] Leer archivo grande txt
�
Hola Rub�n,
Una vez hice algo parecido, no con un archivo tan grande, y opte por crear una tabla en una base de datos donde guardaba los datos que necesitaba, mas el registro original, por si hab�a alg�n error al leer el registro, por ej. error de parseo. Luego podes manejar los datos de la manera que quieras.
El problema que tenes vos es el tama�o del archivo que te crear�a una base un poco grande, no se cu�l es tu situaci�n, pero hoy dia creo que el espacio en disco no es una limitaci�n. Otro punto es ver si te aloca toda la memoria de un saque, alguno sabe?
�
Saludos,
Alejandro
�
�
De: c#@mug.org.ar [mailto:c#@mug.org.ar] En nombre de Rub�n Duarte
Enviado el: s�bado, 14 de mayo de 2011 08:55 p.m.
Para: Ramos, Alejandro
Asunto: [c#] Leer archivo grande txt
�
Este es un correo Entrante desde Internet. No podemos autentificar su remitente.
Tr�tese esta informaci�n con discreci�n. Seguridad Inform�tica-Molinos Rio de la Plata.
�
Estimados, tengo que parsear un archivo de texto de 3.5 gigas (contiene 65 millones de registros) y obtener cierta informaci�n de �l. Que me recomiendan para leerlo?
Gracias!
�
�
Rub�n Duarte
�
�
Los datos contendidos en el mensaje precedente pueden tener informaci�n de propiedad exclusiva de Molinos R�o de la Plata S.A., sus afiliadas o subsidiarias. En virtud de ello, se otorga a �ste el car�cter de CONFIDENCIAL y se impone a los receptores del mismo la obligaci�n de resguardar y proteger su difusi�n y de no divulgarlo sin autorizaci�n.
Asimismo, si hubiere recibido �ste por error deber� comunicarlo, v�a email a SeguridadI...@Molinos.com.ar ,o por fax al +54(11)43401105, y proceder a destruir el mensaje en forma inmediata.
Atte. Molinos R�o de la Plata S.A.
This transmittal and/or attachments may contain confidential and proprietary information of Molinos R�o de la Plata, its afiliates or subsidiaries. If you are not the intended recipient, you are hereby notified that you have received this transmittal in error; any review, dissemination, distribution or copying of this transmittal is strictly prohibited.
hola todos.... yo si creo que deberia primero que todo importarlo en un una db local (para lo cual ya estan las herramientas hechas) y despues que esto resulte satisfactorio entonces trabajar en un script para parsear y subir los datos buenos a un server sql real !
saludos
On 5/16/2011 5:29 PM, Carlos Peix wrote:
Hola Ruben,
Creo que lo mas razonable es establecer alguna linea de base para empezar a analizar opciones. Sugiero que hagas una prueba con cada una de las herramientas ya construidas que te han recomendado.
Luego, si los tiempos son inaceptables y no hay maneras de mejorarlos, podemos darte una mano con un procesador hecho a mano.
Abrazo
----------------------------------
Carlos Peix
2011/5/16 Rubén Duarte <ruben...@hydsolutions.com.ar>
Bueno, gracias a todos por las respuestas, en principio, como pidió Carlos, doy más detalles sobre el tema:
Los campos están separados por comas, vienen 4 campos, y algunos pueden no estar informados
(ej, ZD08JN10623407310,,20140427,975436-001-01,PAL2000H-TTT-GB-XZ)
El primer registro del archivo indica “HEADER,65237420,,,” (el numero es la cantidad de registros con datos)
La aplicación es una aplicación Windows, c#, sql server 2008, pero mi idea es que el usuario que va a ingresar este archivo al sistema, primero lo procese en forma local, (quizás podría incorporar los datos a un sql local, primero), luego de leer la información el usuario debería tener la posibilidad de poder filtrar los datos de acuerdo a cierto group by por alguna de las columnas y en ese filtrado, eliminar unos cuantos millones de registros que en la sucursal Argentina no interesan, para luego incorporar a la base Sql del servidor los registros que sí interesan. Pero mis dudan son, que justamente esta lectura no tarde horas y horas o que no colapse la memoria del equipo mientras este leyendo el archivo, por eso no quiero parsearlo en memoria.
De: c#@mug.org.ar [mailto:c#@mug.org.ar] En nombre de Cristian C. Bittel
Enviado el: Lunes, 16 de Mayo de 2011 11:27
Para: ruben...@hydsolutions.com.ar
Asunto: [c#] Leer archivo grande txt
Así mismo como dice Alejandro lo tuve que hacer alguna vez, insertar en base de datos lo que se parseaba y a la par el registro original. Por velocidad, la única forma satisfactoria era procesar el archivo directamente desde el motor con un procedimiento almacenado. Así que tu mejor opción también puede depender del destino de los datos.
Cristian.
De: c#@mug.org.ar [mailto:c#@mug.org.ar] En nombre de Ramos, Alejandro
Enviado el: lunes, 16 de mayo de 2011 11:17
Para: cristi...@yahoo.com.ar
Asunto: [c#] Leer archivo grande txt
Hola Rubén,
Una vez hice algo parecido, no con un archivo tan grande, y opte por crear una tabla en una base de datos donde guardaba los datos que necesitaba, mas el registro original, por si había algún error al leer el registro, por ej. error de parseo. Luego podes manejar los datos de la manera que quieras.
El problema que tenes vos es el tamaño del archivo que te crearía una base un poco grande, no se cuál es tu situación, pero hoy dia creo que el espacio en disco no es una limitación. Otro punto es ver si te aloca toda la memoria de un saque, alguno sabe?
Saludos,
Alejandro
De: c#@mug.org.ar [mailto:c#@mug.org.ar] En nombre de Rubén Duarte
Enviado el: sábado, 14 de mayo de 2011 08:55 p.m.
Para: Ramos, Alejandro
Asunto: [c#] Leer archivo grande txt
Este es un correo Entrante desde Internet. No podemos autentificar su remitente.
Trátese esta información con discreción. Seguridad Informática-Molinos Rio de la Plata.
Estimados, tengo que parsear un archivo de texto de 3.5 gigas (contiene 65 millones de registros) y obtener cierta información de él. Que me recomiendan para leerlo?
Gracias!
Rubén Duarte
Los datos contendidos en el mensaje precedente pueden tener información de propiedad exclusiva de Molinos Río de la Plata S.A., sus afiliadas o subsidiarias. En virtud de ello, se otorga a éste el carácter de CONFIDENCIAL y se impone a los receptores del mismo la obligación de resguardar y proteger su difusión y de no divulgarlo sin autorización.
Asimismo, si hubiere recibido éste por error deberá comunicarlo, vía email a SeguridadI...@Molinos.com.ar ,o por fax al +54(11)43401105, y proceder a destruir el mensaje en forma inmediata.
Atte. Molinos Río de la Plata S.A.
This transmittal and/or attachments may contain confidential and proprietary information of Molinos Río de la Plata, its afiliates or subsidiaries. If you are not the intended recipient, you are hereby notified that you have received this transmittal in error; any review, dissemination, distribution or copying of this transmittal is strictly prohibited.
Enviado desde mi BlackBerry de Movistar (http://www.movistar.com.ar)
Bueno, un poco tarde mi respuesta, Gracias Daniel, voy por Pentaho, estuve mirándolo medio por encima y es muy completo!!
Mas adelante te cuento como me va con esta herramienta.
Gracias!!