首先我要说的是,能够从平面文件中获取1700万条记录,推送到远程盒子上的数据库并花费7分钟是令人惊讶的.SSIS真的太棒了.但是现在我有那些数据,如何删除重复数据?
更好的是,我想获取平面文件,从平面文件中删除重复项并将它们放回另一个平面文件中.
我在考虑:
Data Flow Task
文件源(带有关联的文件连接)
一个for循环容器
一个脚本容器,包含一些逻辑来判断是否存在另一行
亲爱的,这个网站上的每个人都非常了解.
Update:
我找到了这个链接,可能有助于回答这个问题
使用排序组件.
只需选择要对加载的行进行排序的字段,在左下角,您将看到一个复选框以删除重复项.此框仅根据排序条件删除任何重复的行,因此在下面的示例中,如果我们仅对第一个字段进行排序,则行将被视为重复:
1 | sample A | 1 | sample B |
我建议使用SSIS将记录复制到临时表,然后创建一个根据您的情况使用Select Distinct或Rank的任务来选择将它们汇总到平面文件并从临时表中删除它们的重复项.最后一步是将临时表中的记录复制到目标表中.
确定重复是SQL擅长的,但平面文件不太适合.在你提出的情况下,脚本容器会加载一行,然后必须将它与1700万条记录进行比较,然后加载下一行并重复...性能可能不是那么好.