3

固定幅のフラット ファイルがあり、それを複数の Oracle テーブルにロードする必要があります (1 つの行を複数の行に分割する必要があります)。

各列の上にある数字はサイズであり、目的の出力は次のようになります。

Flatfile data(fixed width):
3   6    3   11          3   10        3   10        3
ID NAME  AGE CTY1       ST1 CTY2      ST2 CTY3      ST3
200JOHN  46  LOSANGELES CA  HOUSTON   TX  CHARLOTTE NC
201TIMBER54  PHOENIX    AZ                CHICAGO   IL
202DAVID 32  ATLANTA    GA  PORTLAND  AZ

発生は異なる場合があります.20〜30まで成長する可能性があります

DESIRED OUTPUT:
TABLE1
ID NAME  AGE
200JOHN  46
201TIMBER54
202DAVID 32


TABLE2
ID  SEQ CTY        ST
200 1   LOSANGELES CA  
200 2   HOUSTON    TX  
200 3   CHARLOTTE  NC
201 1   PHOENIX    AZ      
201 2   CHICAGO    IL        
202 1   ATLANTA    GA  
202 2   PORTLAND   AZ

誰かが私を助けることができますか?

ありがとう!

4

1 に答える 1

1

最初に @bilinkc からのアドバイスに耳を傾け、アンピボットでこれを解決しようとします。

SSIS アンピボット データ フロー変換の使用方法の詳細については、ここをクリックしてください。

ただし、何らかの理由でそれがうまくいかず、本当に SSIS でこれを解決したい場合は、SSIS と 1 つのデータ フローを使用して問題を解決することが技術的に実現可能であると (ちょっと) 嬉しく思います。

以下は、手順の要約リストです。

1) データ フロー タスクをパッケージに追加する

2) データ フロー タスクにフラット ファイル ソースを追加する

3) フラット ファイルの接続マネージャーを使用してフラット ファイル ソースを構成する

4) マルチキャスト データ フロー変換をデータ フロー タスクに追加します。

5) フラット ファイル ソースをマルチキャスト データ フロー変換に接続する



ここで「楽しい」部分 (コピーと貼り付けで時間を節約できます)...

6) 30 個の条件付き分割データ フロー変換をデータ フロー タスクに追加します。

7) マルチキャスト データ フロー変換を各条件付き分割データ フローに接続する

8) 各条件付き分割 N を構成して、州 N と都市 N に値がある行サブセットをプルします。

例: 条件付き分割 1

出力名: CTY1_ST1

条件: [CTY1] != "" && [ST1] != ""

9) 30 の派生列データ フロー変換をデータ フローに追加します。

10) それぞれを 30 の条件付き分割に接続します

11) 派生列名 SEQ と値 1 から 30 でそれぞれを構成します。

12) Union All Data Flow Transformation を追加し、Union All 30 のデータ パイプを元に戻します。



今、「簡単」な部分...

13) 最初の並べ替え変換をデータ フロー タスクに追加します。

14) 31 番目のマルチキャスト パイプを最初の並べ替え変換に接続します。

15) の横にチェック マークを付け、ID で並べ替えます (できれば ID:NAME と ID:AGE は 1:1 です)。

16) ソート値が重複する行を削除するにチェックを入れる

17) 2 つ目のマルチキャスト データ フロー変換を追加します。

18) データ フロー タスクに 2 つ目の並べ替え変換を追加します。

19) Union All を 2 番目の Sort Transformation に接続し、ID で並べ替える

20) マージ結合をデータ フロー タスクに追加する

21) 2 番目のマルチキャスト データ フロー変換を左入力として接続します。

22) 右の入力として、2 番目の並べ替え変換をマージ結合に接続します。

23) Merge Join を Join Type = Inner Join として構成し、列 ID、SEQ、CTY、ST を選択します。

24) 最初の OLE DB Destination をデータ フローに追加し、Merge Join をそれに接続します (結果は TABLE2 です)。

25) 2 番目の OLE DB 変換先をデータ フローに追加し、2 番目のマルチキャスト データ フロー変換をそれに接続します (結果は TABLE1 です)。

于 2013-12-15T04:30:03.730 に答える