モデルケース3とは逆のモデルケースとして、ここではCSVファイルをAccess上の「商品」テーブルに転送します。
ここでは、モデルケース3で作ったパッケージ「Case03.dtsx」を「Case04.dtsx」にコピーして編集する手順とします。また「商品」テーブルはマスタデータですので、多くの場合、転送先のテーブルを空にするなどの処理をしてから転送することの方が多いと思いますが、ここではそれは配慮せず、追加オンリーでの処理として説明します。
- まず、ソリューションエクスプローラ上で、コピー元となるパッケージ「Case03.dtsx」を右クリックして[コピー]を実行します。
- 次に、ソリューションエクスプローラの「SSIS パッケージ」というノードを右クリックして、[貼り付け]を実行します。
- 貼り付けられたパッケージのファイル名を「Case04.dtsx」にリネームします。
- ここから、コピーしたパッケージの内容を書き換えていきます。
まず「制御フロー」タブの内容は「データフロータスク」ひとつのままでよいので、特に変更を加えることなく、それをダブルクリックしてその「データフロー」タブに移ります。
- 「データフロー」タブでは、モデルケース3が「OLE DBソース→フラットファイル変換先」というフローだったのに対して、ここではその逆となります。その際、「ソースがOLE
DBで変換先がフラットファイル」というフローになっているので、ここではそれを単純に交換することはできません。そこでここからの手順でコンポーネントを再配置します。
まず、「OLE DBソース」と「フラットファイル変換先」を、Ctrlキーを押しながらクリックして2つを同時に選択状態にし、DELETEキーで削除します。
- ツールボックスの「データフローの変換元」カテゴリから「フラットファイルソース」コンポーネントをデザイナ上へドラッグ&ドロップします。
- ツールボックスの「データフローの変換先」カテゴリから「OLE DB変換先」コンポーネントをデザイナ上へドラッグ&ドロップします。
- コンポーネントの緑色のコネクタをドラッグ&ドロップし、3つのコンポーネントの処理フローを設定します。
- ここで接続マネージャの設定変更を行います。
「接続マネージャ」の一覧からここでのフラットファイル(CSVファイル)の接続マネージャをダブルクリックして、「フラットファイル接続マネージャエディタ」ダイアログを開きます。そして、CSV上で「説明」の列はANSI形式になっているので、その「DataType」プロパティを「Unicode
テキスト ストリーム [DT_NTEXT]」から「テキスト ストリーム [DT_TEXT]」に変更します。
- [OK]ボタンをクリックしてデザイナに戻ります。
- 次に、「フラットファイルソース」コンポーネントをダブルクリックして「フラットファイルソースエディタ」ダイアログを開きます。
- ここでは次の2つの設定を行ったあと、[OK]ボタンをクリックします。
- 「データソースのNULL値をデータフローでNULL値として保持する」にチェックを付ける・・・・これにチェックを付けないとCSV上である列のデータが空である場合にエラーとなります
- 「列」の設定において、「ID」列のチェックを外し入力データから除外します・・・・Access上はオートナンバー型なのでそのまま転送できないためです
- 次に「データ変換」コンポーネントをダブルクリックします。
パッケージをコピーしてから変更を加えたため、データフロー変換元の内容が変わり、無効な列参照が残っている状態になっています。そこで、自動的に表示された「無効な列参照の復元エディタ」ダイアログの右下で「<無効な列参照を削除する>」を選択し、[適用]ボタンをクリックしたあと、[OK]ボタンをクリックします。
- もう一度、「データ変換」コンポーネントをダブルクリックします。
「データ変換 変換エディタ」ダイアログが表示されたら、「説明」フィールドについてCSV上のデータ形式とAccess上のデータ形式をマッチングさせるために、「テキスト
ストリーム [DT_TEXT]」を「Unicode テキスト ストリーム [DT_NTEXT]」に変更します。
- [OK]ボタンをクリックしてデータ変換の設定を確定しエディタを閉じます。
- 次に、「OLE DB変換先」コンポーネントをダブルクリックして「OLE DB変換先エディタ」ダイアログを開きます。
- まず「テーブル名またはビュー名」の欄でテーブルとして「商品」を選択します。
- 次にこのダイアログの「マッピング」選択します。
この画面で、入力列と変換先列の既存の結合線をすべて削除したあと、「データ変換」コンポーネントで変換されたあとの各列(「○○○ のコピー」)が変換先に出力されるよう、それらの結合線をすべて結び付け直します。
- 最後に[OK]ボタンをクリックしてOLE DB変換先の設定を確定します。
- パッケージを実行してみます。
|