ファイルを変換するための最良のファイルの解析ソリューションとは何ですか?
-
18-09-2019 - |
質問
私は、私たちの企業のインポート・ルーチンのための解析カスタムファイルのための最善の解決策を探しています。私は基本的に標準のファイル形式に一つのファイル形式を変更し、データベースにその輸入はそのデータ1つのルーチンを持っていると思います。私は、標準またはテンプレート形式に準拠するために顧客を得るために、その難しいため、各クライアント用のカスタムスクリプトを作成できるようにする必要があります。私は今のところこれを行うにはPowerShellと鉄のPythonを見てきましたが、私はこれは私が行きたいルートであることを確認していません。私はまたか、私は限り柔軟性など欲しいものを私に与えていない場合があり、ドラッグ&ドロップスタイルのツールであり、そのような才能のようないくつかのツールを見てきました。私たちは、.NET店であり、過去にこれを行うには、カスタムコードを作成しているが、私は、カスタム解析関数に我々は新しいファイル形式を取得するたびに、コーディング、その後作成する迅速で何かを必要としています。
解決
Pythonはこの種のもののための素晴らしいです。我々が使用する理由です。それぞれの新しい顧客の転送は、新たな冒険であるとPythonは私たちに迅速に対応するための柔軟性を提供します。
<時間>編集。ファイルを読み込むすべてのPythonスクリプトは、「カスタムファイルパーサ」です。実際の例がなければ、詳細な例を提供するために、賢明ではありません。
with open( "some file", "r" ) as source:
for line in source:
process( line )
それはに関するすべての「カスタムファイルパーサー」にあります。あなたが.csvまたは.xmlファイルを解析している場合は、Pythonはそのためのモジュールがあります。あなたは、固定形式のファイルを解析している場合は、操作をスライスする文字列を使用すると思います。あなたが他のファイルを解析している場合(X12は?JSON?YAML?)あなたは適切なパーサが必要になります。
のタブDELIM の。
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 )
...
他のヒント
あなたの仕事の複雑さと変動に応じて、SSIS(SQL Serverの統合サービス)のようなETLツールを考慮する必要があります。