Estoy trabajando en un proyecto que implica el análisis de un gran archivo con formato csv en Perl y estoy buscando hacer las cosas más eficientes.¿Cómo analizo eficientemente un archivo CSV en Perl?
Mi enfoque ha sido split()
el archivo por líneas primero, y luego split()
cada línea otra vez por comas para obtener los campos. Pero esto es poco óptimo ya que se requieren al menos dos pases en los datos. (una vez para dividir por líneas, luego una vez más para cada línea). Este es un archivo muy grande, por lo que reducir el procesamiento a la mitad sería una mejora significativa para toda la aplicación.
Mi pregunta es, ¿cuál es el medio más eficiente en el tiempo para analizar un archivo CSV grande usando solo herramientas integradas?
nota: Cada línea tiene un número variable de tokens, por lo que no podemos simplemente ignorar las líneas y dividirlas solo por comas. También podemos suponer que los campos contendrán únicamente datos ascii alfanuméricos (sin caracteres especiales u otros trucos). Además, no quiero entrar en procesamiento paralelo, aunque podría funcionar de manera efectiva.
edición
Sólo puede implicar herramientas integradas que se incluyen con Perl 5.8. Por motivos burocráticos, no puedo usar cualquiera de los módulos de terceros (incluso si Alojado en CPAN)
otra edición
Vamos a suponer que nuestra solución sólo se le permite hacer frente a los datos del archivo una vez que se carga completamente en la memoria.
otra edición
simplemente agarré lo estúpida esta pregunta es. Lo siento por hacerte perder el tiempo. Votando para cerrar.
algún motivo necesita sólo herramientas integradas (estoy suponiendo que no hay derechos de administrador). De lo contrario, intente utilizar el módulo perl 'Text :: CSV'. Hace que el análisis CSV sea mucho más fácil: http://search.cpan.org/~erangel/Text-CSV/CSV.pm –
¿Por qué leer todo el archivo y 'split()' por líneas? Si acaba de abrir el archivo y utiliza la expresión '', puede repetir las líneas para que solo tenga que almacenar una línea por vez en la memoria. –
mob
@Mike algunos módulos perl de cpan no requieren ninguna compilación y se pueden utilizar sin el derecho del administrador ... si hay uno de tipo, ¿seguiría en la lista de la muestra que necesitaba? – Prix