SSIS 对数据排序有两种方式,一种是使用Sort组件,一种是使用sql command的order by clause进行排序。
一,使用Sort组件进行排序
SortType:升序 ascending,降序 descending
SortOrder:排序列的位置,从1开始依次递增,
Remove wors with duplicate sort values:如果排序列重复,是否删除重复的行,这不同于distinct,distinct是输出的所有列不重复,选中该选项,只是保证排序列(输出列的一部分)不重复。
该属性可以从Sort Transformation Advanced Editor中查看和设置
二,使用sql command的order by clause对数据进行排序
Step1,使用OLEDB提供排序的数据,必须是经过排序的数据
select *from dbo.course c with(nolock)order by c.cid asc,c.score desc
Step2,打开OLEDB的Advanced Editor,查看Input and Output Properties选项卡
1,点击OLEDB Source Ouput,设置IsSorted属性为True,该属性设置为true不会对数据排序,只是告知下游组件,该输出数据已经排序。
如果将IsSorted属性设置为True,实际数据并没有排序,在package 运行时会出错,所以必须提供已经排序的数据(在sql 子句中使用order by进行排序)
2,点击Output Columns,逐个设置排序列(Order by Column_List)的SortKeyPosition属性
例如以下的sql语句
select Col_1,Col_2,Col_3,Col_4from dbo.TableNameorder Col_1 asc, Col_2 desc,Col_3 desc
在Output Columns中需要逐个设置,Col_1,Col_2,Col_3,Col_4的SortKeyPosition
由于Col_1,Col_2,Col_3是排序列,序号从1依次递增,而Col_4不是排序列,所以SortKeyPosition的配置如下
Col_1 的SortKeyPosition是 1,第一个排序列,且按照升序排序
Col_2 的SortKeyPosition是 -2,第二个排序列,且按照降序排序
Col_3 的SortKeyPosition是 3,第三个排序列,且按照升序排序
Col_4 的SortKeyPosition是 0,不是排序列
Click the column that you want to indicate is sorted and set its
As an example of how to set the
For this statement, you would set the