我需要能够处理一个输入文件,其中有3种类型的记录由第一列中的值指定,RecordType:
H=header record
D=Detail
T=Trailer
我想我想把所有的细节记录转移到dest-db表中。我认为头记录和尾记录,其中包含指定文件创建时间的控制信息(头信息)和记录计数/校验和信息(在尾记录中),也应该转移到单独的表中。
H,2011-06-02
D,value1,value2,value3,1
D,value1,value2,value3,2
D,value1,value2,value3,3
D,value1,value2,value3,4
T,4, 10
作为一名SSIS新手,我能想到的唯一方法就是将输入文件处理为3列的固定长度文件。col 1=位置1-1col2=Pos 2-2(逗号分隔符,一个丢弃列)col 3=数据
然后,
- 将数据传输到一个3列表中
- 根据记录类型将数据导出到新文件中
- 作为单独的文件重新处理
我希望不要这样做,因为这太难看了。
我更喜欢的方法是如下调整格式。(我的逗号计数可能不正确,但你可能明白了——
"RecType","CreateDate","Value1","Value2","Value3","Value4","RowCount","CheckSum"
H,2011-06-02,,,,,,,,
D,,value1,value2,value3,1,,
D,,value1,value2,value3,1,,
D,,value1,value2,value3,1,,
T,,,,,,,,4,10
不同寻常的是,更改文件格式不是一个选项。
不幸的是,这是一个常见问题。我找到的唯一解决方法是用一个varchar列配置一个平面文件连接管理器。将整行放入字符串列中。
然后使用条件分割来区分页眉/页脚/数据行,并将每种类型指示为单独的输出
然后,您需要将数据写入文件,然后对其执行另一个连接管理器并对其进行处理,或者使用派生列,使用字符串操作、字符串拆分或子字符串等将单个字符串(varchar)拆分为多个列。
您可以配置连接管理器将文件作为单行导入,然后添加条件拆分以根据记录类型拆分记录。然后,您可以为拆分转换的每种类型的输出添加脚本组件。这些脚本组件可用于将输入拆分为所需的输出列。然后,您可以添加单独的目的地,以便将记录插入不同的表中。