2009-05-26 14 views
0

他のデータ型にインポートして列を変換します。インポート時に、列に格納されている値をターゲットのデータ型に変換できるかどうかをチェックします。そうでない場合は、デフォルト値を設定します。私は文字列をintに変換し、文字列を変換できないときは-1を挿入します。T-SQL:インポート中に誤ったエントリを記録する方法

誤ったエントリを別のテーブルにログすることができれば、この時点ではうれしいでしょう。 '1234' 'xze'という構文解析可能な文字列の代わりに、-1をターゲット表に、 'xze'をログ表に入れます。 これは(T-)SQLでは可能ですか?

乾杯、

アンドレアス

+0

のためのゴミを見つけるために、(EXISTS NOT)バックに参加ください各インポートで数十または1000? – gbn

答えて

2

これもSSISのデータフロータスクを行うことは非常に簡単です。試してみる可能性のあるデータ変換またはルックアップのステップには、「成功」出力と「エラー」出力があります。すべてのエラー出力を「共用体」変換に変換し、そこから共通のエラー表に変換するだけです。すべての成功の結果があなたの「成功」テーブルに入ります。エラーテーブルに余分な詳細を追加して、明確なエラーメッセージを表示することもできます。

バッファー全体がシステム内を移動するので、これは素晴らしいパフォーマンスです。最終的には、成功テーブルに有効なデータが一杯になったバッファと、エラーテーブルに書き込まれた小さなバッファがあります。ある行でエラーが発生すると、その行はある行のバッファから別の行に単純に移動されます。

+0

はい。しかし、SQL Server 2000を使用している場合、これは非常に困難です。 – HLGEM

+0

投稿には「sqlserver2005」というタグが付けられています。 –

0

ステージング表を持っている場合は、あなたがファイナルテーブルに良いものをフィルタリングすることができますし、私たちがどのように多くの行を話している?ログテーブル

関連する問題