2017-06-19 22 views
3

ファイルをExcelからSQL tableにインポートしようとしています。 string[DT_WSTR]からstring[DT_STR]にユニコードを変換すると、データ変換によって一部の列で切り捨てエラーが発生します。これは出力エラーです:SSIS切り捨てエラーがステータスを返しました4

[Data Conversion [2]] Error: Data conversion failed while converting column "Contact Name" (187) to column "DataContactName" (105). The conversion returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.".

データフローはエラーとして終了しますが、一部の行はsql tableにコピーされます。 回避策がありますか、これに対する解決策はありますか?

+2

これは、ソリューションが必要なものによって異なります。変換/切り捨てがうまくいないためにエラーを無視したいのですか、エラーを回避するためにターゲット・スキーマを変更する方法を知りたいのですか、またはすべての行がコピーされているか、彼らは何ですか? –

答えて

1

はあなたの変換が正しく、Excelはこれ切り捨てが得られていない、非Unicode/ASCIIテキストに変換しながら、失われているすべての文字が含まれていないことが確実な場合は、

  1. を行うことができるものです、障害の設定をFailure on errorからIgnore on errorに変更してください。紛失したデータをチェックするには、間違いなく出力してフラットファイルに記録する必要があります。
  2. データテーブルの列を確認します。すべての可能なExcelファイルの値を保持するだけで十分ですか?不明な場合は、表の列をVARCHAR(MAX)に変換してみてください。サイズに起因する場合は、切り捨てエラーが発生しないようにする必要があります。他の方法は、N = 2 * Excelの列の最大長であるVARCHAR(N)の宛先サイズを選択することです。あなたのコメントで

I added ignore truncation errors in error output and all rows were copied in sql table. There was no problem to convert characters like ; or "á". Can u brief me what kind of errors i ignored?

私はあなたがIgnore FailureからRedirect Rowにまで故障の設定を変更した後エラー出力にマルチキャストの変換を使用することを示唆しています。次に、マルチキャストの出力の1つをSQLサーバーに挿入し、他のものをフラットファイルの出力先に挿入します。この方法では、エラーを分析するためにフラットファイルと同様にSQLサーバーにデータを取得します

+0

エラー出力で切り捨てエラーを無視し、すべての行がSQLテーブルにコピーされました。文字を変換するような問題はありませんでした。または "á"。私が無視したエラーの種類を教えてもらえますか?大いに感謝する。 – DraganB

1

データ変換でDataContactNameに定義された長さが "Contact Name"の長さより短いように見えます。列「Contact Name」の最大長を確認し、それに基づいてDataContactNameサイズを設定します。大きな長さのデータが到着する前に挿入されている可能性があるため、挿入された行はほとんどありません。ここで

+0

私はerrosを無視し、すべての行がsqlにコピーされました。私は、文字の変換に問題はなかったことを確認した、私はエラーが何だったのかわかりません。将来、[DT_STR]の代わりにDT_TEXTを使用する必要がありますか? – DraganB

関連する問題