これがあなたに何ができるかについての考えをあなたに与えるかもしれない例です。理想的には、SSISパッケージまたはETLジョブでは、データが希望どおりではない可能性があることを考慮に入れる必要があります。時々ポップアップする可能性のある誤ったデータや無効なデータを処理するには、適切な手順を実行する必要があります。そのため、SSISは、データフロータスク内に多くの変換タスクを用意しており、これらを使用してデータをクリーンアップできます。
あなたの場合、あなたはあなたの要件を達成するためにDerived Column
変換または変換を利用することができます。Data conversion
例はで作成されましたSSIS 2008 R2
。日付を含むフラットファイルを読み取り、SQLテーブルにロードする方法を示します。

フラットファイルデータをインポートするための単純なSQLテーブルを作成しました。

SSISパッケージには、SQLへの接続マネージャーとフラットファイル用の接続マネージャーがあります。フラットファイル接続は以下のように構成されています。




SSISパッケージで、[制御フロー]タブにデータフロータスクを配置しました。データフロータスクの内部には、フラットファイルソース、派生列変換、およびOLEDB変換先があります。フラットファイルのソースとOLEDBの宛先は単純なので、ここでは省略します。Derived変換は、式を使用して新しい列を作成します(DT_DBDATE)SmallDate
。データ変換変換を使用して同じことを行うこともできることに注意してください。この新しい列SmallDateTimeValueは、OLEDB変換先のデータベース列にマップする必要があります。

このパッケージを実行すると、ファイル内のすべての値が有効であるとは限らないため、失敗します。

あなたの場合に失敗する理由は、無効なデータがテーブルに直接挿入されているためです。あなたの場合、テーブルはパッケージを失敗させる例外をスローします。この例では、派生列変換のデフォルト設定では、エラーが発生した場合にコンポーネントが失敗するため、パッケージは失敗します。それでは、エラー行をリダイレクトするためにダミーの変換を配置しましょう。この目的のために、マルチキャスト変換を行います。それは実際には何もしません。理想的には、エラーの原因となったデータを分析できるように、OLE DB変換先または選択した他の変換先コンポーネントを使用して、エラー行を別のテーブルにリダイレクトする必要があります。
派生トランスフォーメーションから赤い矢印をドラッグして、マルチキャストトランスフォーメーションに接続します。これにより、[エラー出力の構成]ダイアログがポップアップ表示されます。[エラーと切り捨て]列の値を[失敗コンポーネント]からに変更しますRedirect row
。これにより、エラー行がマルチキャストトランスフォーメーションにリダイレクトされ、テーブルには入りません。

これで、パッケージを実行すると、正常に実行されます。各方向に表示される行数に注意してください。

これがテーブルに入ったデータです。2行のみが有効でした。ファイル内のデータを示した最初のスクリーンショットを見ると、2行だけが有効であることがわかります。
SSISパッケージに要件を実装するためのアイデアが得られることを願っています。
