合并数据1 Merge和Merge Join组件
引入本章的目的:前几章我们已经实现了把Excel中的数据导入到数据库中,实现了不重复数据的插入,也就是都只插入数据库中不存在的数据.那么如果数据流源Excel中的数据和数据库中的数据的主键相同的情况下,再进行插入操作就会出现异常,怎么才能实现自动的更新操作呢?也就是自动的判断数据源的数据,如果数据库中存在就执行更新,不存在就执行插入呢?
可能叫做合并数据会有些误解,这里的合并数据与运用Merge组件和Merge Join组件直接实现的效果是有差别的,首先我们看看这两个组件.
Merge组件 配置
1. 新建一个包,命名为MergeData.
2. 在控制流中从工具箱拖一个数据流任务。编辑进入数据流,拖二个Excel源,编辑Excel源,选择Product.xls文件。
3. 再分别拖二个Sort组件进行排序
按照ProductNumber字段排序
4. 再添加Merge进行数据合并。
5. 拖一个Audit组件。完成数据流配置后,分别添加三个数据查看器。
配置好的数据流图
6. 调试。查看运行效果。
可以看到,Merge数据仅仅合并了两个数据源的数据,包括重复数据。注意到Merge有以下特点:
1.使用Merge转换之前必须对数据进行排序,可能通过如上面那样使用Sort转换,或者直接在源连接中指定ORDER BY直接完成. (需要试验)
2.合并数据的两个路径之间的元数据必须相同. (需要试验)
3.只能应用于两个数据的合并,如要两个以上,可考虑选择Union All转换(需要试验)
Merge Join 组件 配置
1. 再新建一个包,命名为MergeData2.
2. 拖两个OLE DB源,两个数据源分别连接到Product表和ProductInventory表.
3. 拖入两个Sort组件,分别按ProductID字段进行升序排序。Product是左侧输入。
Product排序
4. 拖一个Merge Join组件,设置连接类型为“左外部连接”(左连接,外部,内部连接和SQL一样),并选择需要输出传递到路径的列:
5. 添加三个数据查看器。完成所有配置
6. 运行
可以看到,Merge Join 组件的作用就是把两个表通过外键连接起来,并且通过合并时设置所需要输出列,显示合并表数据。它的作用相当于SQL中的INNER或者OUTER连接。
可以看到和SQL的连接一下, ,当然,如果两路输入位于同一个数据库中,你直接使用OLE DB数据级别的join操作会更快,但是当你希望合并两个不同的数据源时,Merge Join就可以派上用场了.(不是很明白?)
p.s :需要补习下,SQL中连接的知识
项目step1---4源代码文件:版本为SQL 2005,运行代码前还需要安装ExceL应用程序
/Files/cocole/Step1-4Sql05.rar
作者:悟空的天空(天马行空)
出处:http://www.cnblogs.com/cocole/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。