SSISは特にフラストレーションの高いフラットファイルの処理に関して2つのことを行いますが、周りには方法があるようですが、わかりません。 10列のフラットファイルを定義する場合、行マーカーの末尾にCRLFで区切られたタブは、すべての行に正確に10の列があるファイルに対しては完全に機能します。 2つの痛みを伴うシナリオは、これらのされています。誰かがどこか11列目でファイルを提供する場合は、それを定義していないため、SSISは、単に、それを無視して可変列番号を持つSSISフラットファイル
、それはいいだろう。それはあなたが定義した10の列を読んでから、行マーカーの終わりにスキップしなければなりませんが、代わりに10番目の列のデータと追加のデータを連結し、すべて10番目の列に入れます。本当に役に立たないもの。私はこれが起こることを認識します。なぜなら、10列目の区切り記号は他のすべてと同じようにタブではなくCRLFなので、余分なタブを何も置き換えずにCRLFまですべてを取り込むだけです。私の意見では、これは賢明ではありません。
誰かが9列だけのファイルを提供すると、さらに悪いことが起こります。予期せず見つかったCRLFを一時的に無視し、欠落している列に次の行の先頭からの列を埋め込みます。スマートではありませんがここでは控えめです。誰がそれを起こしたかったでしょうか?残りのファイルはその時点でのガベージです。
(もちろん、行の最後にだけバリエーションがreaonably)より少ないまたは追加の列X(扱うことができ、何らかの理由でファイルの幅の変動を持って無理いないようですが、これがあるように見えます
これまでの私たちの唯一の解決策は、行を1つの巨大な列(column0)としてロードし、スクリプトタスクを使用して多くの区切り文字を使用して動的に分割することですこれは、行の幅を4000文字(1つのUnicode列の最大幅)に制限する点を除いて、うまくいきます。幅の広い行をインポートする必要がある場合(テキストのインポートに複数の4000幅の列を指定する場合)、複数列をaboとしてあなたは、行ごとに厳密な数の列を必要とすることに悩まされています。
これらの制限を回避する手段はありますか?