2

私は、いくつかの列を必要とするいくつかの区切られたフラットファイルを解析するプログラムを書いています。入力フラットファイルの形式が将来変更された場合に、コードを簡単に保守/更新できるようにするための最善の方法がわかりません。

現在、私は次の形式の定数intのセットを持っています(これらはもっとたくさんあります):

NameListFirstNameCol = 0; 
NameListLastNameCol = 1; 
NameListAgeCol = 2; 
ClassListRoomNumCol = 0; 
ClassListRoomNameCol = 1;

また、次のような区切り文字の定数もあります。

NameListDelim = ',';
ClassListDelim = '\t';

この種の情報を追跡するためのより良い方法について誰かが提案を持っているかどうかを確認したかったのです。(必要な列は常に入力に含まれると想定できますが、入力の作成者が区切り文字を変更したり、新しい列を追加したり、列を並べ替えたりする可能性があります)。これは、ある程度の再利用が見られるデータ分析スクリプト用ですが、本番ソフトウェアの主要な部分ではありません。

4

3 に答える 3

0

XMLスキーマを使用してフラットファイルの構造を記述するJRecordBindというライブラリを作成しました。例の1つを参照してください。

残念ながら、Javaで書かれています。あなたはそれを移植することを検討するかもしれません。C#バージョンがあれば素晴らしいと思います

于 2012-12-13T11:16:23.047 に答える
0

ここにいくつかの興味深い情報があります:

Schema.ini を使用して CSV ファイルをデータベースにインポートする

特に、「異なる CSV ファイル名で毎回 CSV ファイルをインポートする」セクションまたは「Schema.ini ファイルを動的に作成する」セクションは有望に見えるかもしれません。

于 2012-12-12T21:33:18.677 に答える
0

まず、ファイルからフィールド名と対応するインデックスを含むリストを作成する必要があります。

たとえば、ファイルの最初の行から読み取ることができる名前を保持するための Dictionary< string, int > 。列名と対応するインデックスのリストがあれば、string.Splitを使用して、必要なインデックスのみを使用して次の行を解析できます。

また、構造に必要な列のリストを保存する必要があります。メンテナンスを容易にするために、別の .cs ファイル内の別のクラスとして保持できます。

于 2012-12-12T21:44:18.280 に答える