Question

Je cherche la meilleure solution pour le fichier personnalisé pour l'analyse syntaxique nos routines d'importation d'entreprise. Je veux changer fondamentalement un format de fichier dans un format de fichier standard et ont une routine que les importations que les données dans la base de données. Je dois être en mesure de créer des scripts personnalisés pour chaque client depuis sa difficile d'obtenir le client de se conformer à un format standard ou modèle. Je l'ai regardé PowerShell et Iron Python pour le faire jusqu'à présent, mais je ne suis pas sûr que ce soit la route que je veux aller. Je l'ai également examiné certains outils tels que Talend, qui est un outil de style glisser-déposer qui peut ou ne peut pas me donner ce que je veux aussi loin que la flexibilité. Nous sommes un magasin .NET et avons créé un code personnalisé pour le faire dans le passé mais je besoin de quelque chose qui est plus rapide pour créer ensuite le codage des fonctions d'analyse personnalisées à chaque fois que nous obtenons un nouveau format de fichier.

Était-ce utile?

La solution

Python est merveilleux pour ce genre de chose. Voilà pourquoi nous utilisons. Chaque nouveau transfert de clients est une nouvelle aventure et Python nous donne la flexibilité nécessaire pour répondre rapidement.


Modifier . Tous les scripts python qui lisent les fichiers sont « fichiers personnalisés » parseurs. Sans un exemple concret, ce n'est pas judicieux de fournir un exemple détaillé.

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

C'est tout ce qu'il ya à un « analyseur de fichier personnalisé ». Si vous l'analyse des fichiers .csv ou .xml, puis Python a des modules pour cela. Si vous l'analyse des fichiers format fixe, vous utiliseriez des opérations de tranchage chaîne. Si vous l'analyse d'autres fichiers (X12? JSON? YAML?), Vous aurez besoin parseurs appropriées.

Tab-Delim .

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

Mise en page fixe .

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

Autres conseils

En fonction de la complexité et de la variabilité de votre travail, vous devriez envisager un outil ETL comme SSIS (SQL Server Integration Services).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top