0

ProcessInputRowメソッドで行の処理を中止することは可能ですか?この関数で受信CSVデータを使用していくつかのデータ検証を行っています。サブに行の値を設定しています。エラーが発生した場合は、ProcessInputRowでキャッチし、後で承認するためにステージングテーブルへのデータの書き込みを開始します。すべてが正常に動作します。問題は、不良データのある行がまだターゲットテーブルに書き込まれていることです。

たとえば、次のような日付列にCDateとして追加しようとする文字列値99-02-2010の行があります。

Row.ChangeDate = CDate(rowValues.GetValue(0).ToString())'=>例外をスローします

言われているように、例外はステージングテーブルに行を書き込むことによってスローされ、処理されます。しかし、スクリプトタスクによってこの行の処理を停止する方法が見つかりません。何か案は?

よろしく

4

2 に答える 2

1

スクリプトタスクで新しい出力を作成し、不正な行をエラー出力にルーティングします(適切なエラーメッセージ列/説明を追加します)。次に、それらを使用したい他のテーブルにルーティングします。

于 2010-06-18T15:03:35.563 に答える
0

ついにそれを管理しました。[1]と[2]の組み合わせになりました。新しく作成した出力に手動で出力行を追加する必要がありました。次に、無効な行のテーブルをマップすることができました。これで、有効な行と無効な行の出力があります。スクリプトで行データ値を割り当て、それに応じた出力に転送します。

すべての列を手作業で作成するのは少し奇妙です。しかし、最終的には正常に機能しています。方法を知っていれば簡単です。あなたの入力のためのThx。

[1] http://agilebi.com/cs/blogs/jwelch/archive/2007/05/08/handling-flat-files-with-varying-numbers-of-columns.aspx

[2] http://consultingblogs.emc.com/jamiethomson/archive/2005/09/05/SSIS-Nugget_3A00_-Multiple-outputs-from-a-synchronous-script-transform.aspx

于 2010-06-21T08:11:56.107 に答える