これは、 SSIS 2008 R2を使用して作成されたサンプルパッケージで、フラットファイルをデータベーステーブルにインポートする方法を説明しています。
Fixed_Width_File.txt
スクリーンショットに示すように、データで名前が付けられた固定幅のフラットファイルを作成します。スクリーンショットでは、Notepad++を使用してファイルの内容を表示しています。キャリッジリターンやラインフィードなどの特殊文字を表示する機能があります。CR LF
行区切り文字のキャリッジリターンとラインフィードを示します。
- パッケージの[制御フロー]タブで、[データフロータスク]を配置します。
データフロータスクをダブルクリックすると、[データフロー]タブが表示されます。[データフロー]タブで、フラットファイルソースを配置します。フラットファイルソースをダブルクリックすると、フラットファイルソースエディタが表示されます。[新規]ボタンをクリックして、フラットファイル接続マネージャーエディターを開きます。
フラットファイルソースエディタの[全般]セクションで、接続マネージャ名(たとえば[ソース])に値を入力し、フラットファイルの場所を参照してファイルを選択します。この例では、パスにサンプルファイルを使用していC:\temp\Fixed_Width_File.txt
ます。ファイルにヘッダー行がある場合は、ヘッダー行に値1を入力してテキストボックスをスキップし、ヘッダー行をスキップできます。
- [列]セクションをクリックします。選択に応じてフォントを変更します。CourierNewを選択したので、より少ないスクロールでより多くのデータを表示できます。
69
[行幅]テキストボックスに値を入力します。この値は、すべての列の幅の合計+行区切り文字の2です。正しい行幅を設定すると、[ソースデータ列]セクションに固定幅のファイルデータが正しく表示されます。ここで、適切な場所をクリックして、列の制限を決定する必要があります。以下のスクリーンショットのセクション4、5、6に注意してください。
- [詳細]セクションをクリックします。前の手順で[列]セクションに設定した列制限に基づいて、5つの列が自動的に作成されます。5番目の列は行区切り文字用です。
- 列名の名前を、、、、、
FirstName
およびLastName
に変更しId
ますDate
RowDelimiter
- デフォルトでは、列はDataType文字列[DT_STR]で設定されます。特定の列が異なるデータ型になることがかなり確実な場合は、[詳細設定]セクションで構成できます。
Id
列をデータ型に変更しfour-byte signed integer [DT_I4]
、日付列をデータ型に変更しますdate [DT_DATE]
- [プレビュー]セクションをクリックします。データは、列の構成に従って表示されます。
- フラットファイル接続マネージャーエディターで[ OK]をクリックすると、データフロータスクでフラットファイル接続がフラットファイルソースに割り当てられます。
- フラットファイルソースエディタで、[列]セクションをクリックします。フラットファイル接続マネージャーで構成された列に気付くでしょう。
RowDelimiter
必要ないので、チェックを外してください。
- データフロータスクで、を配置し
OLE DB Destination
ます。フラットファイルソースからの出力をOLEDB変換先に接続します。
- OLE DB変換先エディターで、名前の付いたOLE DB接続マネージャーを選択し、テーブルの名前またはビューのドロップダウンを次のように
SQLServer
設定します。[dbo].[FlatFile]
- OLE DB変換先エディターで、[マッピング]セクションをクリックします。フラットファイル接続マネージャーの列名はデータベースの列と同じであるため、マッピングは自動的に行われます。名前が異なる場合は、手動で列をマップする必要があります。[OK]をクリックします。
- これでパッケージの準備が整いました。パッケージを実行して、固定幅のフラットファイルデータをデータベースにロードします。
- データベース内のテーブルdbo.FlatFileをクエリすると、データベースにインポートされたフラットファイルデータに気付くでしょう。
このサンプルは、固定幅のフラットファイルをデータベースにインポートする方法についてのアイデアを提供するはずです。エラーロギングの処理方法については説明していませんが、これで開始でき、パッケージを操作するときに他のSSIS関連機能を見つけるのに役立ちます。
お役に立てば幸いです。
SQL Scripts
:
CREATE TABLE [dbo].[FlatFile](
[Id] [int] NOT NULL,
[FirstName] [varchar](25) NOT NULL,
[LastName] [varchar](25) NOT NULL,
[Date] [datetime] NOT NULL
)