如何在SSIS中插入记录时添加重置式增量序号(无需脚本/存储过程)
纯SSIS组件实现批次内自增Sequence(无需脚本/存储过程)
当然有办法!不用写一行脚本或存储过程,靠SSIS自带的几个组件就能完美实现你的需求,我给你一步步讲清楚:
核心思路
我们需要给每一批传入的记录标记一个唯一批次ID,然后基于这个批次ID分组生成从1开始的连续序号。
步骤1:给批次添加唯一标识
在数据流任务里,先添加一个「衍生列」组件:
- 新增一列,命名为
BatchID - 表达式用SSIS系统变量
@[System::ExecutionInstanceGUID]—— 这个变量每次运行SSIS包都会生成一个全新的GUID,刚好对应你说的“一次传入的记录为一个批次”,下次运行包(新的一批记录)就会自动换一个新的GUID。
步骤2:确定记录的顺序
添加一个「排序」组件,连接到衍生列的输出:
- 选择你用来确定“第一条、第二条”的字段进行排序(比如原始数据里的业务主键、或者数据输入的顺序字段),确保排序后的顺序就是你想要的Sequence顺序。
- 同时把
BatchID也加入排序条件(其实是用来分组,保证同一个批次的记录放在一起)。
步骤3:生成批次内的Sequence
添加一个「行号」(Row Number)转换组件,连接到排序组件的输出:
- 在组件设置里,「排序依据」选择
BatchID - 「行号列名」设为
Sequence - 「行号起始值」填1
这样一来,同一个批次(相同BatchID)的记录会从1开始生成连续的序号,下一个批次因为BatchID不同,序号会自动重置为1,完全符合你的要求!
小提示
如果你的数据源是比如平面文件,想要严格按文件里的行顺序生成Sequence,那排序组件一定要选择能对应行顺序的字段(比如文件里的行号字段,或者如果没有的话,确保数据源读取时的顺序和文件一致,再在排序组件里按原始输入的顺序字段排序)。
内容的提问来源于stack exchange,提问作者Ranjith Varatharajan
相关产品推荐
相关产品推荐

