SSIS利用重新定向行方式过滤Excel 数据源中的重复数据

最近,在开发SSIS2008包的时候遇到一个问题,系统需要从Excel文件中导入数据到SQL Server的表中,但是,Excel文件中有些重复数据,而数据库中的表结构要求插入的数据不能重复,这样数据流任务在向表中插入数据的时候会出错以至于无法插入任何一条数据到相应的表中。

当时想到的第一种解决方案是,在数据库中增加一个可以插入重复数据的其他结构都和目标表相同的表,然后将数据导到该表中,添加“执行SQL任务”删除重复数据,然后再添加一个数据流任务将刚保存数据的表中的数据导入到目标表中。这种方法可以解决这个问题,不过这样数据库中就必须增加一个表,我的想法是尽量不改动数据库结构来实现这个任务,于是乎我想到了下面这个方案。

将出错的“OLEDB 目标任务”的输出错误的方式改成重新定向行,并添加一个“Excel 目标任务” 来接收这些错误行。如下图所示。

修改前数据流任务截图:


修改"OLE DB Destination"任务(用的是英文版,该任务即上面提到的OLEDB 目标任务),将错误输出方式改成重定向行:


数据流中添加一个“Excel 目标任务”(即下图中的"Get Duplicate Datas" 任务)来获取"OLE DB Destination"任务输出的重复行:


用这种方式可以保证将正确的数据导入到目标表中,并且将重复的数据导入到了另一个Excel中,当然,用这种方法可以将重复数据导入到任何一种目标数据源中,不限于Excel。它可以避免因改动数据库而带来的不便,还对重复数据进行了保存。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值