Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting SSI对来自异构源的大型数据进行排序-备选方案_Sorting_Ssis_Etl_Ssis 2012 - Fatal编程技术网

Sorting SSI对来自异构源的大型数据进行排序-备选方案

Sorting SSI对来自异构源的大型数据进行排序-备选方案,sorting,ssis,etl,ssis-2012,Sorting,Ssis,Etl,Ssis 2012,我正在寻找在SSI上排序约200万条记录的替代方法 来自异构源SQL、Oracle、DB2的数据在应用多个转换后,有一个Union All来组合数据,然后需要按三个字段进行排序 这是因为在发送给外部供应商之前,数据需要按特定字段排序 以下是我已经尝试过的解决方案: 缓冲区大小为100 MB,最大行数为50K行 在每一个来源应用排序只是为了我的头脑! 将排序转换的验证外部元数据属性设置为False 尝试脚本任务C排序 这些都没有显著提高性能 还有其他选择吗 更新: 这是三个不同字段上的字符串排序,

我正在寻找在SSI上排序约200万条记录的替代方法

来自异构源SQL、Oracle、DB2的数据在应用多个转换后,有一个Union All来组合数据,然后需要按三个字段进行排序

这是因为在发送给外部供应商之前,数据需要按特定字段排序

以下是我已经尝试过的解决方案:

缓冲区大小为100 MB,最大行数为50K行 在每一个来源应用排序只是为了我的头脑! 将排序转换的验证外部元数据属性设置为False 尝试脚本任务C排序 这些都没有显著提高性能

还有其他选择吗

更新:
这是三个不同字段上的字符串排序,属于三个不同的数据库表SQL、Oracle和DB2。在合并数据集之前,我无法排序

尝试将输出加载到单个表,并使用Order by和适当的索引-这会产生意外的结果,因为SQL Order by的行为与排序转换不同 使用合并转换而不是联合所有:


与其先使用UNION ALL组合数据集,然后对生成的大型组合数据集进行排序,不如先对每个较小的数据集进行排序,然后使用合并转换。合并转换的结果将已排序。

为什么需要排序?用于SSIS中的后续操作?请注意这两点:1。数据库不按排序顺序存储。它们按聚集索引顺序存储。2.数据库不会按存储或插入顺序返回,而是按顺序返回。您可以尝试将所有内容加载到一个表中并进行排序,但重点是什么?为什么要进行排序?尝试将它们未排序地插入到一个在排序字段上建立索引的表中,然后从该表中按顺序选择它们。.@Nick.McDermaid数据需要按特定字段排序,然后才能发送给外部供应商。我只是通过排序转换得到了预期的结果,Order by并不像预期的那样。请参阅更新。@TabAlleman:排序依据和排序转换结果不同。根据我们的业务要求,排序转换排序顺序是正确的。如果您选择正确的排序规则,您可能会得到您想要的排序。SQL Server支持windows排序规则。分拣是一项昂贵的操作。如果您想在SSIS中执行此操作,您只需对其进行调优—确定三个源中的任何一个是否提供的数据太慢,确定是否内存不足等。这是三个不同字段上的字符串排序,属于三个不同的DB表SQL、Oracle、DB2。在合并数据集之前,我无法排序。