0

セクションに分割されたファイルを受け取りました。セクションは、"start-of-<sectionName>" と "end-of-<sectionname>" の行で区切られます。私が懸念している 2 つのセクションは、フィールドのリストと実際のデータです。簡単な例を次に示します。

start-of-fields
a
b
c
end-of-fields
start-of-data
1|2|3
2|3|4
end-of-data

私の問題は、特定のファイルにすべてのフィールドが含まれていない可能性がある場合に発生します。ファイルに含まれるフィールドは、フィールド セクションにリストされています。データ フロー タスクのスクリプト コンポーネントで、存在する列を解析し、それに応じてデータ セクションを解析する方法はありますか? 私は現在、フィールド セクションを無視し、すべての列がそこにあると想定しているスクリプト コンポーネント (C#) を使用しています。タスクの出力バッファーの親クラスに、BufferColumnIndexes というメンバーがあることに気付きましたが、保護されているため、スクリプトから取得できません。

4

1 に答える 1

1

確かに、スクリプト コンポーネントは入力ファイルを 1 行ずつ読み取ることができます。行が見つかると、start-of-fields列ヘッダーの素敵な小さな配列を構築し、end-of-fields行に到達すると停止します。start-of-data次に、行と行の間の各行を読み取りend-of-data、値を解析して、提供された値とデフォルトに必要なものを含む行を出力バッファーに追加します。

ただし、これは非常に多くのステートフル コーディングです。SSIS 2008 ではスクリプト コンポーネントを実際にデバッグすることはできないため、動作させるのは非常に困難です。

本格的なカスタム データ フロー コンポーネントを作成した方がよい場合もあります。または、完全に別のコンソール アプリケーションを作成することもできます。

于 2013-03-05T18:33:20.430 に答える