SSISパッケージを使用して固定幅のフラットファイルをデータベースにインポートする方法についてのチュートリアルはありますか?
さまざまな長さの列を含むフラットファイルがあります。
Column name Width
----------- -----
First name 25
Last name 25
Id 9
Date 8
フラットファイルを列に変換するにはどうすればよいですか?
これは、 SSIS 2008 R2を使用して作成されたサンプルパッケージで、フラットファイルをデータベーステーブルにインポートする方法を説明しています。
Fixed_Width_File.txtスクリーンショットに示すように、データで名前が付けられた固定幅のフラットファイルを作成します。スクリーンショットでは、Notepad++を使用してファイルの内容を表示しています。キャリッジリターンやラインフィードなどの特殊文字を表示する機能があります。CR LF行区切り文字のキャリッジリターンとラインフィードを示します。
SQL Serverデータベースで、 [ SQLスクリプト]dbo.FlatFileセクションにある作成スクリプトを使用して名前を付けたテーブルを作成します。
新しいSSISパッケージを作成し、SQLServerデータベースに接続する新しいOLEDB接続マネージャーを追加します。OLEDB接続マネージャーの名前がSQLServerであると仮定します。


データフロータスクをダブルクリックすると、[データフロー]タブが表示されます。[データフロー]タブで、フラットファイルソースを配置します。フラットファイルソースをダブルクリックすると、フラットファイルソースエディタが表示されます。[新規]ボタンをクリックして、フラットファイル接続マネージャーエディターを開きます。
フラットファイルソースエディタの[全般]セクションで、接続マネージャ名(たとえば[ソース])に値を入力し、フラットファイルの場所を参照してファイルを選択します。この例では、パスにサンプルファイルを使用していC:\temp\Fixed_Width_File.txtます。ファイルにヘッダー行がある場合は、ヘッダー行に値1を入力してテキストボックスをスキップし、ヘッダー行をスキップできます。

69[行幅]テキストボックスに値を入力します。この値は、すべての列の幅の合計+行区切り文字の2です。正しい行幅を設定すると、[ソースデータ列]セクションに固定幅のファイルデータが正しく表示されます。ここで、適切な場所をクリックして、列の制限を決定する必要があります。以下のスクリーンショットのセクション4、5、6に注意してください。

FirstNameおよびLastNameに変更しIdますDateRowDelimiter
Id列をデータ型に変更しfour-byte signed integer [DT_I4]、日付列をデータ型に変更しますdate [DT_DATE]



RowDelimiter必要ないので、チェックを外してください。
OLE DB Destinationます。フラットファイルソースからの出力をOLEDB変換先に接続します。
SQLServer設定します。[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
)
派生列変換では、各列にSUBSTRING()関数を使用できます。 例:
列DerivedColumn
FirstName SUBSTRING(Data、startFrom、Length);
ここで、FirstNameの幅は25であるため、0番目の位置から派生列で、SUBSTRING(Data、0、25);を指定して指定する必要があります。
他の列についても同様です。
非常によく説明されています、Siva!あなたのチュートリアルと優れたイラストは、Microsoftが明確にすべきことを示しています
これらの2つがない場合、インポートを実行しようとすると、次のエラーメッセージが表示さ れます。列「列x」のデータ変換でステータス値4が返され、ステータステキスト「テキストが切り捨てられたか、ターゲットコードページで1つ以上の文字が一致しませんでした」 。」。
エラーの原因を検索しているときに誰かがこのページを見つけてくれることを願って、このエラーテキストに追加しました。事後であっても、あなたのツロリアルは見つける価値があります!