在SSIS中将固定宽度的行拆分为多个行

3

我有一份固定宽度的平面文件,需要加载到多个Oracle表中(一行需要拆分成多行)。

每列上方的数字是它们的大小,我的期望输出应该像下面展示的那样。

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

有人可以帮我吗?

谢谢!


你能帮我理解你所说的“出现次数可能会有所不同..它可以增长到20-30个”是什么意思吗? - billinkc
一般来说,您要做的是对数据进行UNPIVOT操作。 - billinkc
感谢回复... 这里提到的示例数据最多有cty3 nas st3,但数据可能在cty18 st18或cty20 st20结束。 - Mt Kr
1个回答

1
我建议您先听取@bilinkc的建议,并尝试使用非旋转方法解决此问题。
请点击这里了解如何使用SSIS Unpivot数据流转换。
然而,如果由于某些原因无法解决且确实想要使用SSIS解决此问题,我可以(有点)高兴地说,使用SSIS和一个数据流技术上可行。
以下是步骤简述:
1)向包中添加数据流任务
2)向数据流任务添加平面文件源
3)为您的平面文件配置连接管理器,以配置平面文件源
4)向数据流任务添加多路传输数据流转换
5)将平面文件来源与多路传输数据流转换相连
现在是“有趣”的部分(在这里复制和粘贴可以节省时间)...
6)向数据流任务添加30个条件拆分数据流变换
7)将多路传输数据流转换连接到每个条件分割数据流。

8) 配置每个条件分割 N,以提取具有 State N 和 City N 值的行子集

示例:条件分割 1

输出名称:CTY1_ST1

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

9) 向您的数据流添加 30 个派生列数据流转换

10) 将每个转换连接到您的 30 个条件分割

11) 配置每个转换的派生列名称 SEQ 和值为 1 到 30

12) 添加一个 Union All 数据流转换,并将 30 个数据管道全部合并



现在是“简单”的部分...

13) 向您的数据流任务添加第一个排序转换

14) 将第 31 个多路传输管道连接到第一个排序转换

15) 在 ID 旁边打勾并按照 ID: NAME 和 ID: AGE 进行排序(希望它们是一一对应的)

16) 选中删除具有重复排序值的行

17) 添加第二个多路传输数据流转换

18) 向您的数据流任务添加第二个排序转换

19) 将您的Union All连接到第二个Sort Transformation,并按ID排序

20) 在您的数据流任务中添加一个Merge Join

21) 将您的第二个Multicast Data Flow Transformation连接为左输入

22) 将您的第二个Sort Transformation连接到Merge Join作为右输入

23) 将您的Merge Join配置为Join Type = Inner Join,选择列ID、SEQ、CTY、ST

24) 向您的数据流添加第一个OLE DB Destination,并将您的Merge Join连接到它(结果为TABLE2)

25) 向您的数据流添加第二个OLE DB Destination,并将您的第二个Multicast Data Flow Transformation连接到它(结果为TABLE1)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接