3

SSISを使用してSQLServer2005テーブルの内容をcsvファイルにエクスポートしようとしています。データフロータスクには、テーブルのOLE DBソースと、ファイルのフラットファイルの宛先があります。

データをコピーすると、特定の行の列の1つでエラーが発生し始めました。調査の結果、問題は以下のデータのコンマにあることがわかりました。

データの問題(nvarchar255)

errors code l075 showing,,,re test.

コメント列のOLEDBソース

ここに画像の説明を入力してください

派生列

これが問題だったので、ソースオブジェクトと宛先オブジェクトおよび宛先オブジェクトの間に派生列オブジェクトを作成し、置換を使用してコンマを除外しようとしましたREPLACE(Comment,","," ")が、同じ列がまだ失敗し、以下のエラーが発生します。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

宛先コンポーネント

ここに画像の説明を入力してください

例外

ここに画像の説明を入力してください

[検査失敗先[206]]エラー:データ変換に失敗しました。列「コメント」のデータ変換により、ステータス値4とステータステキスト「テキストが切り捨てられたか、ターゲットコードページで1つ以上の文字が一致しませんでした。」が返されました。

[検査失敗先[206]]エラー:「コメント」列のフラットファイルデータをコピーまたは変換できません。

[SSIS.Pipeline]エラー:SSISエラーコードDTS_E_PROCESSINPUTFAILED。
コンポーネント「InspectionFailuresDestination」(206)のProcessInputメソッドは、
入力「Flat File Destination Input」(207)の処理中にエラーコード0xC02020A0で失敗しました。識別されたコンポーネントは、ProcessInputメソッドからエラーを返しました。エラーはコンポーネントに固有ですが、エラーは致命的であり、データフロータスクの実行を停止します。
この前に、障害に関する詳細情報を含むエラーメッセージが投稿される場合があります。

[Inspecton Failures Source [128]]エラー:データフロータスクバッファーに行を追加しようとして失敗し、エラーコード0xC0047020が発生しました。

[SSIS.Pipeline]エラー:SSISエラーコードDTS_E_PRIMEOUTPUTFAILED。
コンポーネント「InspectonFailuresSource」(128)のPrimeOutputメソッドは、エラーコード0xC02020C4を返しました。パイプラインエンジンがPrimeOutput()を呼び出したときに、コンポーネントが失敗コードを返しました。失敗コードの意味はコンポーネントによって定義されますが、エラーは致命的であり、パイプラインは実行を停止しました。
この前に、障害に関する詳細情報を含むエラーメッセージが投稿される場合があります。

4

2 に答える 2

2

わかりました、問題は実際にはテキストに隠された不正な文字のようです

下の画像では、一番上の行は文字列の前に四角形を示していre testます。データベースのコメント列は明らかに異なる文字セットを使用する nvarchar であるため、CHAR(13) + CHAR(10) を使用して改行を置き換えることはできません。

修正には、フィールドを nvarchar から varchar に変換してから、コンバーターで置換を実行する必要がありましたか? 画像の修正された 2 番目の ling になる文字

SELECT ID,
        REPLACE(REPLACE(CAST(Comment AS varchar(255)),'?',' '),',',' ') Comment
FROM tblInspectionFailures  WHERE (ID = 216899)

ここに画像の説明を入力

変換要件の詳細はこちら

これは私にとって理想的な解決策ではありませんが、うまくいきます。誰にも他のオプションがありますか。

于 2012-11-30T10:59:40.613 に答える
0

コメント列を置き換えずに、別の列を作成し、新しい派生列を宛先列にマップして確認できます。

于 2012-11-30T08:52:56.623 に答える