我需要能够处理一个输入文件,其中有3种类型的记录,由第1列中的值指定,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 = Pos 1-1 col 2 = Pos 2-2(逗号分隔符,丢弃列) col 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
不幸的是,更改文件格式不是一种选择。
答案 0 :(得分:3)
不幸的是,这是一个常见问题。我发现它的唯一方法是使用单个varchar列配置平面文件连接管理器。将整行放入字符串列。
然后使用条件拆分在页眉/页脚/数据行之间进行distingush,并将每种类型指向单独的输出
然后,您需要将数据写入文件,然后对其执行另一个连接管理器并对其进行处理,或者使用派生列使用字符串操作将单个字符串(varchar)拆分为多个列,字符串拆分或子串等等
答案 1 :(得分:0)
您可以将连接管理器配置为将文件作为单行导入,然后添加条件拆分以根据记录类型拆分记录。 然后,您可以为拆分转换的每种输出类型添加脚本组件。这些脚本组件可用于将输入拆分为所需的输出列。然后,您可以添加单独的目标以将记录插入到不同的表中。