/ / Qual é a melhor solução de análise de arquivos para converter arquivos? - powershell, ironpython, etl, análise de arquivos

Qual é a melhor solução de análise de arquivos para converter arquivos? - powershell, ironpython, etl, fileparsing

Estou procurando a melhor solução para customizaranálise de arquivos para nossas rotinas de importação corporativa. Quero basicamente mudar um formato de arquivo para um formato de arquivo padrão e ter uma rotina que importe esses dados para o banco de dados. Eu preciso ser capaz de criar scripts personalizados para cada cliente, pois é difícil fazer com que o cliente cumpra um formato padrão ou de modelo. Eu olhei para o PowerShell e o Iron Python para fazer isso até agora, mas não tenho certeza se esse é o caminho que quero seguir. Também observei algumas ferramentas, como o Talend, que é uma ferramenta de estilo de arrastar e soltar, que pode ou não me dar o que eu quero em termos de flexibilidade. Somos uma loja .NET e criamos código personalizado para fazer isso no passado, mas preciso de algo que seja mais rápido para criar e depois codificar funções de análise personalizadas sempre que obtivermos um novo formato de arquivo.

Respostas:

0 para resposta № 1

Python é maravilhoso para esse tipo de coisa. É por isso que usamos. Cada nova transferência de cliente é uma nova aventura e o Python nos dá a flexibilidade de responder rapidamente.


Editar. Todos os scripts python que lêem arquivos são "analisadores de arquivos personalizados". Sem um exemplo real, não é sensato fornecer um exemplo detalhado.

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

Isso é tudo o que há em um arquivo personalizadoanalisador ". Se você estiver analisando arquivos .csv ou .xml, o Python terá módulos para isso. Se você estiver analisando arquivos de formato fixo, usaria operações de corte de cadeia. Se você estiver analisando outros arquivos (X12? JSON? YAML?) Precisará de analisadores apropriados.

Tab-Delim.

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

Layout fixo.

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 resposta № 2

Dependendo da complexidade e variabilidade do seu trabalho, você deve considerar uma ferramenta ETL como o SSIS (SQL Server Integration Services).