سؤال

أنا أبحث عن أفضل حل لتحليل الملفات المخصصة لإجراءات استيراد المؤسسة لدينا. أريد تغيير تنسيق ملف واحد في الأساس إلى تنسيق ملف قياسي ولديه روتين واحد يستورد هذه البيانات في قاعدة البيانات. أحتاج إلى أن أكون قادرا على إنشاء برامج نصية مخصصة لكل عميل منذ صعوبة الحصول على العميل للامتثال بتنسيق قياسي أو قالب. لقد نظرت إلى PowerShell و Python الحديد للقيام بذلك حتى الآن، لكنني لست متأكدا من أن هذا هو الطريق الذي أريد أن أذهب إليه. لقد نظرت أيضا إلى بعض الأدوات مثل Talend وهي أداة أسلوب السحب والإفلات والتي قد تعطيني أو لا تعطيني ما أريد بقدر ما مرونة. نحن متجر .NET وقم بإنشاء رمز مخصص للقيام بذلك في الماضي ولكني بحاجة إلى شيء أسرع لإنشاء وظائف تحليل مخصص ثم ترميز في كل مرة نحصل عليها تنسيق ملف جديد في.

هل كانت مفيدة؟

المحلول

بيثون رائع لهذا النوع من الأشياء. لهذا السبب نستخدم. كل عملية نقل عملاء جديدة هي مغامرة جديدة ويعطينا بيثون المرونة في الاستجابة بسرعة.


يحرر. وبعد جميع البرامج النصية Python التي تقرأ الملفات هي "محلل ملفات مخصصة". بدون مثال حقيقي، ليس من المعقول تقديم مثال مفصل.

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

هذا كل شيء هناك إلى "محلل ملف مخصص". إذا كنت تحليل ملفات .csv أو .xml، فبيثون لديه وحدات لذلك. إذا كنت تحليل ملفات تنسيق ثابت، فستستخدم عمليات تخفيف السلسلة. إذا كنت تحليل الملفات الأخرى (x12؟ json؟ yaml؟) ستحتاج إلى المحللين المناسبين.

علامة التبويب.

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

تخطيط ثابت.

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

نصائح أخرى

اعتمادا على تعقيد وتقلب عملك، يجب عليك التفكير في أداة ETL مثل SSIS (SQL Server Integration Services).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top