0

エンタープライズ インポート ルーチンのカスタム ファイル解析に最適なソリューションを探しています。基本的に、1 つのファイル形式を標準のファイル形式に変更し、そのデータをデータベースにインポートするルーチンを 1 つ作成したいと考えています。標準またはテンプレートの形式に顧客を準拠させるのは難しいため、クライアントごとにカスタム スクリプトを作成できる必要があります。これまでのところ、これを行うために PowerShell と Iron Python を見てきましたが、これが私が行きたいルートかどうかはわかりません。また、ドラッグ アンド ドロップ スタイルのツールである Talend などのいくつかのツールも調べましたが、柔軟性に関しては、必要なものが得られる場合とそうでない場合があります。私たちは .NET ショップで、過去にこれを行うためのカスタム コードを作成しましたが、新しいファイル形式を取得するたびにカスタム解析関数をコーディングするよりも迅速に作成できるものが必要です。

4

2 に答える 2

2

作業の複雑さと変動性に応じて、SSIS(SQL Server Integration Services)などのETLツールを検討する必要があります。

于 2009-12-09T22:15:49.180 に答える
0

Pythonは、この種のことには素晴らしいです。それが私たちが使用する理由です。新しい顧客の移行はそれぞれ新しい冒険であり、Python は迅速に対応する柔軟性を私たちに与えてくれます。


編集します。ファイルを読み取るすべての Python スクリプトは「カスタム ファイル パーサー」です。実際の例がなければ、詳細な例を提供することは賢明ではありません。

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

「カスタム ファイル パーサー」についてはこれでほぼすべてです。.csv または .xml ファイルを解析している場合、Python にはそのためのモジュールがあります。固定形式のファイルを解析している場合は、文字列のスライス操作を使用します。他のファイル (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 )
    ...
于 2009-12-09T22:14:33.287 に答える