原文:通过SSIS的“查找”组件进行不同数据源之间数据的合并操作

为了协助开发还原生产环境中的某些bug,需要将将生产环境的某些特定表数据导入到测试环境做测试,
之前一直都是暴力地truncate测试环境的表,然后用SSIS将生产环境对应的整张表数据导入测试环境,简便快捷
后来开发提出来,保留测试环境已有的数据,只同步差异的数据(根据主键),于是就尝试使用SSIS中的“查找”组件进行不同服务器之间的“存在则更新,不存在则插入”数据合并操作,
实际操作的时候只执行插入操作,达到同步数据的目的。

尝试之后觉得还是挺好使的,看起来跟简单,操作起来步骤还是挺多的,记录一下。

  首先最主要的一个组件就是如下截图的查找组件。

完整的测试结果如图所示,最主要的目的就是让源数据“兵分两路”,以不同的方式(更新或者插入)去同步到目标服务器中,当然数据源与数据目标可以是不同的服务器,不同类型的数据库或者文件,关键是一种实现方式。

开始操作步骤

新建SSIS任务什么的就不说了,操作一遍就回了,微软的IDE还是比较好用的。

首先是最基本的数据流任务,拖一个数据任务流到SSIS设计器中

双击进入源编辑界面,设置数据源的服务器和表

  

  

  添加查找组件,设置查找组件的服务器和表(导入数据的目标服务器和表)

  

  根据这里的需求,常规选项中一定要将设置为“将行重定向到无匹配输出”,因为这里是要执行“不存在就插入”的操作,因此“源”与“目标”中的数据进行匹配,匹配到的与没有匹配到的都要输出,只不过是处理方式不同

  注意有对于目标中的数据有三种缓存模式,这里选择默认的方式,不多说,有兴趣的可以上网搜

  

  继续编辑列映射属性

  

  分别拉一个OLE DB 命令 和 OLE DB目标,位置尽量摆放的好看一点

  

  分别设置个OLE DB 命令 和 OLE DB目标的属性信息

  

  

  列映射选项卡中编译映射信息,可用目标列中的Parama_0和Param_1分别代表两个上述SQL语句中的两个参数,

  因为SQL语句是update test_table1 set name = ? where id = ?,这里的参数的顺序要与占位符的?顺序表示的意义相同

  

  “左边”更新的操作分支属性编辑完成之后,编辑“右边”的插入分支的属性,这一步就简单了,设置好数据源与目标表即可。

  

接下来就可以执行了,将源数据“兵分两路”,分别执行“存在则更新,不存在则插入”的操作,因为这里已经示例的是源与目标匹配到了5999行,进行更新,没有匹配的是4999行,执行插入

执行完成后,源服务器与目标服务器数据一致。

一边测试一遍截图,比较乱,中间还是有一些细节的。

对于类似小众化或者说是平时用的不是太频繁的工具,时间久了可能会生疏,只要多实践,多摸索,多看报错信息,还是可以使用起来提高工作效率的。

最新文章

  1. International Conference for Smart Health 2015 Call for Papers
  2. AppCode 2016.2.3 发布,支持 Swift3 的特性
  3. 来抢你们IT狗的饭碗了
  4. Linux phpbb论坛的安装(中文版)
  5. Linux下U盘的挂载和文件的拷贝
  6. Flex Metadata tags 元数据标签
  7. RxJava开发精要5 – Observables变换
  8. 使用exchange普通表模式被切换到分区表
  9. 用kotlin方式打开《第一行代码:Android》之开发酷欧天气(1)
  10. node-Telnet
  11. 项目启动log4j相关警告问题
  12. oracle学习笔记(七) 预编译Statement介绍与使用
  13. 关于Tensorflow安装opencv和pygame
  14. div “下沉”
  15. 01 自学Aruba之功率单位和相对单位
  16. java基础---->序列化框架arvo的使用
  17. PAT乙级 1031. 查验身份证(15)
  18. 【原型实战】分分钟搞定Unsplash网站原型设计
  19. Java基础之断言
  20. Echarts 曲线数少于图例数解决方法

热门文章

  1. 关于用WebView或手机浏览器打开连接问题
  2. tcp长连接和短连接
  3. 移动CMPP3.0接口
  4. Xcode崩溃定位:异常位置Exception的断点
  5. Android在网络上分析获取图片(支持bmp格式)
  6. WPF中PasswordBox控件的Password属性的数据绑定
  7. base64编码转图片
  8. 数据批量插入MSSQL
  9. webpack之font-awesome
  10. MySQL 关键字和保留字