SSIS 查找 组件
通过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行,执行插入
执行完成后,源服务器与目标服务器数据一致。

一边测试一遍截图,比较乱,中间还是有一些细节的。
对于类似小众化或者说是平时用的不是太频繁的工具,时间久了可能会生疏,只要多实践,多摸索,多看报错信息,还是可以使用起来提高工作效率的。
SSIS 查找 组件的更多相关文章
- 通过SSIS的“查找”组件进行不同数据源之间数据的合并操作
原文:通过SSIS的"查找"组件进行不同数据源之间数据的合并操作 为了协助开发还原生产环境中的某些bug,需要将将生产环境的某些特定表数据导入到测试环境做测试,之前一直都是暴力地t ...
- 自动生成查找组件的lua代码
本篇主要解决的问题是使用lua脚本编写unity业务逻辑时,自动生成一些查找组件及绑定控件事件的lua代码! 现在很多unity项目都是用ulua作为热更新解决方案,因此需要用lua来写相关的逻辑,经 ...
- Android:认识R类、findViewById方法查找组件、@string查找字符、@color查找颜色、@drawable查找图片、@dimen某个组件尺寸定义、项目引入资源国际化
导入 之前都是断断续续的看了一些于如何使用android开发的文章.资料等,到目前位置很多基础的东西都不清楚,于是去学习了别人的课程,才了认识了R类.findViewById方法查找组件.项目引入资源 ...
- SSIS Destination 组件使用Fast-Load mode出错
查看一个Package的历史Message 数据,发现 DataFlow Task 经常出错,错误信息的Description是: Description: "While reading c ...
- 使用PIA查找组件的PeopleSoft导航
导航到企业组件>查找对象导航. 使用组件名称 使用页面名称 使用辅助页面名称 使用内容参考名称 只需输入对象名称,然后单击“搜索”即可.在这个例子中.我们知道组件名称即'PRCSDEFN',我们 ...
- Informatica 常用组件Lookup之四 查找组件
在映射中配置查找转换时,请定义以下组件: 查找源 端口 属性 条件 元数据扩展 查找源 您可以使用平面文件或关系表作为查找源.创建查找转换时,您可以从以下位置导入查找源: 资料库中的任 ...
- SSIS 数据源组件的External Metadata和Advanced Property
1,SSIS的组件属性ValidateExternalMetadata 如果一个Destination组件使用的是上游创建的staging table,那么必须设置 ValidateExternalM ...
- SSIS: Lookup组件高级用法,生成推断成员(inferred member)
将数据导入事实表如果无法匹配维度表的记录一般有两种处理方式. 一是将不匹配记录输出到一个表中待后续处理,然后重新导入.二是先生成维度Key,后续再完善维度key,本文指导各位使用第二种方式. 背景 比 ...
- Cocos Creator学习二:查找节点和查找组件
1.目的:只有通过方便的获取节点对象以及组件,才能较好的进行逻辑控制. 2.通过 cc.find(节点全路径名称字符串) 获取节点. 3.通过getComponent获取组件(注意一个是类型,一个是类 ...
随机推荐
- MongoDB 添加用户名和密码
MongoDB 添加用户名和密码 我用的是 mongodb3.6,如果没有的话先安装. sudo apt install mongodb 终端输入mongo,首先添加管理用户, show dbs // ...
- css常用样式背景background如何使用
css背景background属性常用于定义HTML的背景,background简写属性作用是将背景属性设置在一个声明中,background背景属性常见为以下这些:.background-color ...
- css3神奇的圆角边框、阴影框及其图片边框
css3圆角,建议IE10以上 如果border-radius 单位是百分比,则参考为自身宽高,因此当宽高不一致时,圆角为不规则形状 如果border-radius 为50%,则为椭圆:当宽高一致时, ...
- 【Spring】事务(transactional) - REQUIRES_NEW在JdbcTemplate、Mybatis中的不同表现
环境 数据库: oracle 11g JAR: org.springframework:spring-jdbc:4.3.8.RELEASE org.mybatis:mybatis:3.4.2 概念 R ...
- Vim 全选命令
ggVG稍微解释一下上面的命令gg 让光标移到首行,在vim才有效,vi中无效V 是进入Visual(可视)模式G 光标移到最后一行选中内容以后就可以其他的操作了,比如:d 删除选中内容y ...
- 剑指offer-面试题52-两个链表的第一个公共节点-链表
/* 题目: 求两个链表的第一个公共节点. */ /* 思路: 见代码. */ #include<iostream> #include<cstring> #include< ...
- python字符串前面加上'r'的作用
在打开文件的时候open(r'c:\....') 加r和不加''r是有区别的 'r'是防止字符转义的 如果路径中出现'\t'的话 不加r的话\t就会被转义 而加了'r'之后'\t'就能保留原有的样子 ...
- sublime修改快捷键样式
样式----------------{ "always_show_minimap_viewport": true, "auto_find_in_selection&quo ...
- Android日期时间控件DatePickerDialog和TimePickerDialog
1.DatePickerDialog 在一些万年历.日程表等APP上我们经常可以看到日期选择控件,由于很少有用户会老老实实的手工输入日期,所以该控件的作用就是为了控制用户的输入格式,在Android中 ...
- CF718C Sasha and Array [线段树+矩阵]
我们考虑线性代数上面的矩阵知识 啊呸,是基础数学 斐波那契的矩阵就不讲了 定义矩阵 \(f_x\) 是第 \(x\) 项的斐波那契矩阵 因为 \(f_i * f_j = f_{i+j}\) 然后又因为 ...