Domanda

Sto cercando la migliore soluzione per l'analisi di file personalizzato per la nostra routine di importazione di impresa. Voglio cambiare fondamentalmente un formato di file in un formato di file standard e hanno una routine che le importazioni che i dati nel database. Ho bisogno di essere in grado di creare script personalizzati per ogni cliente sin dalla sua difficile convincere il cliente a rispettare un formato standard o un modello. Ho guardato PowerShell e ironpython per farlo finora, ma io non sono sicuro che questa è la strada che voglio andare. Ho anche guardato alcuni strumenti come Talend che è uno strumento stile drag and drop, che può o non può darmi quello che voglio per quanto riguarda la flessibilità. Siamo un negozio di .NET e hanno creato un codice personalizzato per fare questo in passato, ma ho bisogno di qualcosa che è più veloce di creare quindi codifica le funzioni di analisi personalizzate ogni volta che otteniamo un nuovo formato di file in.

È stato utile?

Soluzione

Python è meraviglioso per questo genere di cose. Ecco perché usiamo. Ogni nuovo cliente di trasferimento è una nuova avventura e Python ci dà la flessibilità per rispondere rapidamente.


Modifica . Tutti gli script python che leggono i file sono "parser di file personalizzati". Senza un esempio reale, non è ragionevole per fornire un esempio dettagliato.

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

Questo è tutto quello che c'è da un "file parser personalizzato". Se stai analisi di file .csv o .xml, quindi Python ha moduli per questo. Se stai analisi di file in formato fisso, devi usare stringa di operazioni di affettamento. Se stai parsing altri file (X12? JSON? YAML?) Avrete bisogno di parser appropriate.

Tab-delim .

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

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

Altri suggerimenti

A seconda della complessità e la variabilità del vostro lavoro, si dovrebbe considerare uno strumento di ETL come SSIS (SQL Server Integration Services).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top