/ / ¿Cuál es la mejor solución de análisis de archivos para convertir archivos? - powershell, ironpython, etl, fileparsing

¿Cuál es la mejor solución de análisis de archivos para convertir archivos? - powershell, ironpython, etl, fileparsing

Estoy buscando la mejor solución para la costumbre.Análisis de archivos para nuestras rutinas de importación empresarial. Básicamente, quiero cambiar un formato de archivo a un formato de archivo estándar y tener una rutina que importe esos datos a la base de datos. Necesito poder crear scripts personalizados para cada cliente, ya que es difícil hacer que el cliente cumpla con un formato estándar o de plantilla. He mirado a PowerShell y Iron Python para hacer esto hasta ahora, pero no estoy seguro de que esta sea la ruta a la que quiero ir. También he analizado algunas herramientas como Talend, que es una herramienta de estilo de arrastrar y soltar que puede o no darme lo que quiero en cuanto a flexibilidad. Somos una tienda .NET y hemos creado un código personalizado para hacer esto en el pasado, pero necesito algo que sea más rápido para crear y luego codificar las funciones de análisis personalizado cada vez que obtengamos un nuevo formato de archivo.

Respuestas

0 para la respuesta № 1

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


Editar. Todos los scripts de Python que leen archivos son "analizadores de archivos personalizados". Sin un ejemplo real, no es sensato proporcionar un ejemplo detallado.

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

Eso es todo sobre un "archivo personalizadoanalizador ". Si está analizando archivos .csv o .xml, Python tiene módulos para eso. Si está analizando los archivos de formato fijo, usará las operaciones de corte de cadena. Si está analizando otros archivos (¿X12? ¿JSON? ¿YAML?) Necesitará los analizadores adecuados.

Tab-Delim.

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

Disposición fija.

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 )
...

2 para la respuesta № 2

Dependiendo de la complejidad y la variabilidad de su trabajo, debe considerar una herramienta ETL como SSIS (SQL Server Integration Services).