原文:通过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的“查找”组件进行不同数据源之间数据的合并操作的更多相关文章

  1. gridview 绑定多个格式相同的数据源(数据查询合并)

    在做项目时,要求在同一个GridView中同时显示不同分组中的前若干条数据 几个技术要点: 1.数据分组,本方法中未用group by 2.几个结果格式相同的查询合并绑定 3.取查询结果的前或后若干条 ...

  2. SSIS 查找 组件

    通过SSIS的“查找”组件进行不同数据源之间数据的合并操作 为了协助开发还原生产环境中的某些bug,需要将将生产环境的某些特定表数据导入到测试环境做测试,之前一直都是暴力地truncate测试环境的表 ...

  3. OLAP引擎:基于Presto组件进行跨数据源分析

    一.Presto概述 1.Presto简介 Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节,Presto虽然具备解析SQL的能力,但它并不属于标准的数据库 ...

  4. 微软BI 之SSIS 系列 - Lookup 组件的使用与它的几种缓存模式 - Full Cache, Partial Cache, NO Cache

    开篇介绍 先简单的演示一下使用 Lookup 组件实现一个简单示例 - 从数据源表 A 中导出数据到目标数据表 B,如果 A 数据在 B 中不存在就插入新数据到B,如果存在就更新B 和 A 表数据保持 ...

  5. 自动生成查找组件的lua代码

    本篇主要解决的问题是使用lua脚本编写unity业务逻辑时,自动生成一些查找组件及绑定控件事件的lua代码! 现在很多unity项目都是用ulua作为热更新解决方案,因此需要用lua来写相关的逻辑,经 ...

  6. 如何在SSIS的脚本组件中访问变量

    原文:如何在SSIS的脚本组件中访问变量 这是一个小问题,我们在SSIS的设计中很多地方都会用到变量,我习惯性地将"变量"和"表达式"称为SSIS的灵魂,虽然不 ...

  7. Android:认识R类、findViewById方法查找组件、@string查找字符、@color查找颜色、@drawable查找图片、@dimen某个组件尺寸定义、项目引入资源国际化

    导入 之前都是断断续续的看了一些于如何使用android开发的文章.资料等,到目前位置很多基础的东西都不清楚,于是去学习了别人的课程,才了认识了R类.findViewById方法查找组件.项目引入资源 ...

  8. SpringBoot2 整合JTA组件,多数据源事务管理

    本文源码:GitHub·点这里 || GitEE·点这里 一.JTA组件简介 1.JTA基本概念 JTA即Java-Transaction-API,JTA允许应用程序执行分布式事务处理,即在两个或多个 ...

  9. 微软BI 之SSIS 系列 - 两种将 SQL Server 数据库数据输出成 XML 文件的方法

    开篇介绍 在 SSIS 中并没有直接提供从数据源到 XML 的转换输出,Destination 的输出对象有 Excel File, Flat File, Database 等,但是并没有直接提供 X ...

随机推荐

  1. 2015年工作中遇到的问题:81-90,标题党-Nginx与真实IP-Mybatis等

     81."标题党"与"百度收录"问题. 很久以来,就发现那些"标题党"的收录和排名情况非常好,比如CSDN某篇文章,就随便一写,就排在了第一 ...

  2. iOS 9和xcode7设置

    升级了Xcode7各种问题来了,折腾两天 一.Xcode7  http适配设置 1.大部分社交平台接口不支持https协议. 2.大部分社交平台SDK不支持bitcode. 3.添加Scheme白名单 ...

  3. Erlang中的record与宏

    http://www.cnblogs.com/me-sa/archive/2011/07/20/erlang0006.html 在Erlang中使用Tuple ,数据项的顺序\数量都是确定的,一旦数据 ...

  4. 任务调度平台Cuckoo-Schedule

    任务调度平台Cuckoo-Schedule 1         概述 1.1      平台概述 Cuckoo-Schedule是基于Quartz-Schedule的轻量级任务调度框架,具有易学习.易 ...

  5. 【25.23%】【codeforces 731C】Socks

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  6. 利用WPF建立自己的3d gis软件(非axhost方式)(五)在鼠标点击的位置增加UI

    原文:利用WPF建立自己的3d gis软件(非axhost方式)(五)在鼠标点击的位置增加UI 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bP ...

  7. 黑科技 —— Type-C 接口与 USB3.1

    Type-C 接口解决了 USB 永远插不准的世界性难题. 小开科普一分钟:究竟USB Type-C是何方神圣? 1. Type-C USB Type-C,简称是 USB-C.Type-C 只是 US ...

  8. 查看系统中安装了那些dotnet core 的SDK和运行时的命令

    原文:查看系统中安装了那些dotnet core 的SDK和运行时的命令 1.查看SDK dotnet --list-sdks 2.查看运行时 dotnet --list-runtimes 效果如下图 ...

  9. Spring MVC【入门】一篇!

    MVC 设计概述 在早期 Java Web 的开发中,统一把显示层.控制层.数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1:     出现的弊端: JSP ...

  10. MyEclipse使用汇总——MyEclipse10设备SVN插入

    一.下载SVN插件subclipse 下载地址:folderID=2240" style="color:rgb(7,93,179)">http://subclips ...