2011-07-29 8 views
0

私が抱えている作業についていくつか質問があり、何か答えがあれば幸いです。固定位置のテーブルへのフラットファイルのSSISに関する問題

私はフラットファイル(CSV)からデータを抽出し、そのデータを位置に基づいて特定のフォーマットで宛先テーブルにロードする必要があります。

私はそれにいくつかのデータをorder_id,Total_sales,Date_Orderedを有する場合、例えば、私はデータを抽出し、これ等の表にそれをロードしなければならない:

  • 最初のフィールドが数値で2の固定長を有しますデータ型として。

  • total_sales

    ここで(ccyy-mm-dd.hh.mm.ss.xxxxxxxxように、フラットファイルのものとは異なるであろう形式の日時として、数値データ型と長さ10

  • 日付でテーブルにtotal_salesのカラムに挿入されますxはゼロで埋めなければなりません)。

多分、私はこれを解決するための正しい考え方を持っていないかもしれません。

Iは、次の方法を使用して試みた:

  • は、CSVファイルを取得するフラット・ファイル・ソースを使用し、その後、作成された固定データタイプのテーブルとOLE DB先への入力としてそれを与えました。ここでの問題は、列がロードされていることですが、ロードされた日付の場合にはゼロで埋めなければなりません。また、全長を利用していない場合はほとんどの列でゼロを入力する必要があります。それ。

    たとえば、長さが4のOrderidがあり、フラットファイルに201などの注文IDがある場合は、テーブルにロードするときに0201に変更する必要があります。

  • また、フラットファイルソースを使用する別の方法を試してみましたが、行全体を入力として派生した列で区切ります。私はそれを取得するのに成功しましたが、最終的には、派生列のデータ型がブール型に明示的に固定されました。これは私が必要とするデータ型に変更できません。

私は、この問題に対処する方法についていくつかの提案を教えてください...

答えて

0

あなたは次の形式

order_id,Total_sales,Date_Ordered 
1,123.23,01/01/2010 
2,242.20,02/01/2010 
3,34.23,3/01/2010 
4,9032.23,19/01/2010 

でcsvファイルを持っていると仮定すると、私は、フラットファイルを作成することから始めますソース(データフロータスク内)ですが、幅を固定するのではなく、フォーマットをDelimitedに設定します。最初のデータ行の列名を選択します。列タブで、行区切り文字が "{CR} {LF}"に設定され、列区切り文字が "コンマ(、)"に設定されていることを確認します。最後に、[詳細設定]タブで、各列のデータ型を整数、10進数、および日付に設定します。

数値データ型を先頭に0を埋め込み、データベースに格納するときに使用します。データベースの数値データ型は先行ゼロを保持しない傾向があります。したがって、2つの選択肢があります。データをターゲットシステムの型(int、decimal、dateTime)として保持するか、派生列コントロールを使用して文字列に変換します。あなたがIDを注文するゼロをリードする5まで追加されます派生列制御に

"00000" + (DT_WSTR, 5) [order_id] 

のような表現を追加し、文字列として保存することを決定した場合(5へのデータ型の長さを設定することを忘れないでください)と"00001"の注文IDが発生します

データフローの宛先内にターゲットを作成し、それに応じてテーブル/フィールドのマッピングを作成します(またはSSISに新しいテーブル/マッピングを作成させる)。

関連する問題