/ / Aké je najlepšie riešenie na analýzu súborov na konverziu súborov? - powerhell, ironpython, etl, fileparsing

Aké sú najlepšie riešenia na analýzu súborov na konverziu súborov? - powershell, ironpython, etl, fileparsing

Hľadám najlepšie riešenie pre zákazníkaanalýza súborov pre naše podnikové importné rutiny. Chcem v podstate zmeniť jeden formát súboru na štandardný formát súboru a mať jednu rutinu, ktorá importuje tieto údaje do databázy. Musím byť schopný vytvoriť vlastné skripty pre každého klienta, pretože je ťažké presvedčiť zákazníka, aby dodržiaval štandardný alebo šablónový formát. Pozrel som sa na PowerShell a Iron Python, aby to urobili doteraz, ale nie som si istý, či ide o trasu, ktorú chcem ísť. Pozrel som sa aj na niektoré nástroje, ako napríklad Talend, ktorý je nástrojom drag and drop v štýle drag and drop, ktorý mi môže, ale nemusí, poskytnúť to, čo chcem, pokiaľ ide o flexibilitu. Sme .NET shop a vytvorili sme vlastný kód, aby sme to urobili v minulosti, ale potrebujem niečo, čo je rýchlejšie na vytvorenie a potom kódovanie vlastných funkcií syntaktického analyzovania zakaždým, keď dostaneme nový formát súborov.

odpovede:

0 pre odpoveď č. 1

Python je pre takúto vec úžasný. To je dôvod, prečo používame. Každý nový prevod zákazníka je nové dobrodružstvo a Python nám poskytuje flexibilitu, aby sme mohli rýchlo reagovať.


editovať, Všetky skripty pythonu, ktoré čítajú súbory, sú „vlastné analyzátory súborov“. Bez konkrétneho príkladu nie je rozumné poskytnúť podrobný príklad.

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

To je všetko o „vlastnom súbore“ak analyzujete súbory .csv alebo .xml, Python má na to moduly. Ak analyzujete súbory s pevným formátom, použili by ste operácie krájania reťazcov. Ak analyzujete ďalšie súbory (X12? JSON? YAML?), Budete potrebovať vhodné analyzátory.

Tab-DELI.

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

Opravené rozloženie.

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 pre odpoveď č. 2

V závislosti na zložitosti a variabilite vašej práce by ste mali zvážiť nástroj ETL, ako je SSIS (SQL Server Integration Services).