Pregunta

Estoy buscando la mejor solución para el análisis de archivo personalizado para nuestras rutinas de importación de la empresa. Quiero cambiar básicamente un formato de archivo en un formato de archivo estándar y tienen una rutina que las importaciones de esos datos en la base de datos. Tengo que ser capaz de crear scripts personalizados para cada cliente, ya que es difícil de conseguir que el cliente cumple con un formato estándar o plantilla. He mirado en PowerShell y ironpython hacer esto hasta ahora, pero no estoy seguro de que este es el camino que quiero ir. También he visto algunas herramientas como Talend, que es una herramienta de estilo de arrastrar y soltar que puede o no me puede dar lo que quiero por lo que la flexibilidad. Somos una tienda de .NET y hemos creado un código personalizado para hacer esto en el pasado pero necesitamos algo que es más rápido para crear a continuación la codificación funciones de análisis personalizada cada vez que conseguir un nuevo formato de archivo.

¿Fue útil?

Solución

Python es maravilloso para este tipo de cosas. Es por eso que utilizamos. Cada nueva transferencia al cliente es una nueva aventura y Python nos da la flexibilidad para responder rápidamente.


Editar . Todos los scripts de Python que leen los archivos son "programas de análisis de archivos personalizados". Sin un ejemplo real, no es sensato para proporcionar un ejemplo detallado.

with open( "some file", "r" ) as source:
    for line in source:
        process( line )

Eso es todo lo que hay a un "archivo de analizador personalizado". Si va a analizar archivos .csv o .xml, a continuación, Python tiene módulos para eso. Si va a analizar archivos de formato fijo, que tendría que utilizar cuerdas operaciones de cortar. Si va a analizar otros archivos (X12? JSON? YAML?) Que necesitará analizadores adecuados.

-Delim .

from collections import namedtuple
RecordLayout = namedtuple('RecordLayout',['field1','field2','field3',...])
def process( aLine ):
    record = RecordLayout( aLine.split('\t') )
    ...

Fixed Layout .

from collections import namedtuple
RecordLayout = namedtuple('RecordLayout',['field1','field2','field3',...])
def process( aLine ):
    fields = ( aLine[:10], aLine[10:20], aLine[20:30], ... )
    record = RecordLayout( fields )
    ...

Otros consejos

En función de la complejidad y variabilidad de su trabajo, se debe considerar como una herramienta ETL de SSIS (SQL Server Integration Services).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top