2

フィールドがテキストストリーム(DT_TEXT)として設定されたTSVファイルをインポートするプロジェクトがあります。

リダイレクトされる無効な行がある場合、無効な行のDT_TEXTフィールドが最初の有効な行に追加されます。

これが私のテストデータです:

タブ区切りの入力ファイル:( "tsv IN")

CatID   Descrip
y   "desc1"
z   "desc2"
3   "desc3"

CatIDは整数(DT_I8)のように設定されます

Descripはテキストスチーム(DT_TEXT)として設定されます

これが私の基本的なデータフロータスクです:

(申し訳ありませんが、担当者が10を超えるまで画像を投稿できません:-/)

したがって、2つの無効な行がリダイレクトされ、3番目の行が成功に向けられますが、「成功」の出力は次のとおりです。

"CatID","Descrip"
"3","desc1desc2desc3"

これはDT_TEXTフィールドを使用するときのバグですか?私はSSISにかなり慣れていないので、テキストストリームの使用を誤解している可能性があります。DT_STRで切り捨ての問題が発生していたため、DT_TEXTを使用することにしました。

それが役に立ったら、私のtsvFailの出力は以下のとおりです。

Flat File Source Error Output Column,ErrorCode,ErrorColumn
x   "desc1"
,-1071607676,10
y   "desc2"
,-1071607676,10

前もって感謝します。

4

1 に答える 1

0

データフローのパフォーマンスに深刻な影響を与える可能性があるため、SSIS フィールド内でDT_TEXT、DT_NTEXT、または DT_IMAGEデータ型を使用することは絶対に避けてください。問題は、これらの型が CLOB (Character Large OBject) としてではなく、BLOB (Binary Large OBject) として渡されることです。

参照については、次を参照してください。

DT_TEXTを使用すると、大きな配列からのように文字を引き出すことはできません。このタイプはバイト配列として表され、任意のタイプのデータを格納できます。この場合、これは必要なく、フィールドの連結に問題を引き起こしています。(私の環境で問題を再現しました)

私の提案は、説明のためにDT_STRに固執し、大きな OutputColumnWidth を与えることです。ソース ファイルから読み取るときに切り捨てが発生しないように十分な大きさにして、テストしてください。

于 2012-10-31T15:12:56.170 に答える