1

SSIS(SQL Server 2008 R2)を使用して、入力CSVファイルをSQLテーブルに変換しています。入力ファイルの5つの列(実数-例:19.54271)の値が正しくない場合(文字列-例: "NAN")、パッケージが失敗することがあります。

これらの5つの列の不良値「NAN」をチェックし、それをNULL値または既知の不良数値(-9999)に変換して、修正された値を同じ最終SQLテーブルに書き込む最も簡単な方法は何ですか?

これまでに次のような混乱がありましたが、最終的にもっと簡単な方法があるかどうかを尋ねることにしました...

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

私の現在の条件付きロジック:
ここに画像の説明を入力してください

私のCase1派生列変換:
ここに画像の説明を入力してください

注:他の派生列を1つのインスタンスに結合できるかどうかはまだわかりませんが、宛先には1つの入力しか持てないため、次のことを行う必要があると思われます...

TIA

4

2 に答える 2

2

ロジックが複雑な場合、または複数の評価がある場合、SSIS式は扱いにくくなります。あなたの場合、あなたは、個々に、ほとんど何もしないたくさんのタスクで終わるでしょう。

これをスクリプトコンポーネントにバンドルします。そうすれば、基本的なvbまたはc#関数を使用して、すべての列が適切に数値に変換されるかどうかを評価し、変換されない場合はデフォルトを割り当てることができます。さらに、try / catchシナリオを実装して、エラーを別の出力バッファーに適切に送信できます。

スクリプトコンポーネントを変換として使用する方法の例を次に示します。

http://www.bimonkey.com/2009/09/the-script-transformation-part-1-a-simple-transformation/

http://www.sqlis.com/sqlis/post/The-Script-Component-as-a-Transformation.aspx

http://www.codeproject.com/Articles/193855/An-indespensible-SSIS-transformation-component-Scr

于 2012-07-17T00:18:23.300 に答える
1

ロジックが単純に不正な値をnullに変換するよりも複雑だった場合は、スクリプトコンポーネントを使用するのが最善の方法のようです。

ただし、変換オブジェクトを使用したロジックはかなり単純なので、これが他の誰かに役立つことを願っています。

パッケージ(データソース内の疑わしい列の行をリダイレクトすることに注意してください):
SSISパッケージ

条件付き分割ロジック:[編集:すべてのケース条件には個別の処理パスが必要であることがわかりました。複数の式を評価する場合は、それらに||を追加することで、1つのケースで評価できます。オペレーター。] ケース条件ロジック

派生列ロジック: 派生列ロジック

于 2012-07-20T21:15:26.420 に答える