使用SSIS创建同步数据库数据任务

2023-11-08

SSIS(SQL Server Integration Services)是用于生成企业级数据集成和数据转换解决方案的平台。使用 Integration Services 可解决复杂的业务问题,具体表现为:复制或下载文件,发送电子邮件以响应事件,更新数据仓库,清除和挖掘数据以及管理 SQL Server 对象和数据。这些包可以独立使用,也可以与其他包一起使用以满足复杂的业务需求。Integration Services 可以提取和转换来自多种源(如 XML 数据文件、平面文件和关系数据源)的数据,然后将这些数据加载到一个或多个目标。 

下面我使用SSIS来演示一个实际例子。比如我有一个数据库,出于备份数据或者其它的目的,会定期的对这个数据库的数据迁移到其它的数据库去。迁移的时候,有些新增的字段会被插入备份数据库,而有些被修改过的字段也会在备份数据库被修改。现在我们就用SSIS来完成这项任务。

首先在我源数据库db_source和目标数据库db_destination中运行以下SQL创建好需要的表,就以这一个表test_1来进行示范。

CREATE TABLE [dbo].[test_1](
    [Id] [int] IDENTITY(1,1) NOT NULL primary key,
    [Name] [varchar](50) NULL,
    [Age] [int] NULL
)

 

建好表好在源数据表中可以随便加几条记录,目标数据库暂时留空。

现在我们打开VS,创建一个Intergration Services Project。(注意:如果SQL Server 装的是Express版的话是没有这个项目工程模板的)

 

创建好工程后,在Control Flow这个Tab下拖入一个Data Flow Task,如下图:

 

双击这个Data Flow Task,我们就会进入Data Flow这个Tab标签中。

 

然后我们在左边工具栏里找到OLE DB Source,继续拖两个OLE DB Source出来。分别给它们命名为Source DB和Destination DB。

 

将数据源拖出来后,双击它,可以对它进行一些设置,主要就是链接数据库及选择你要进行迁移的表或者视图等设置,这里我就不详细说明了。注意一点的是就像上图所示,如果一个图形上出现一个红X的话说明设置有错误。

再来就是拖两个Sort及一个Merge Join出来,将之前的数据源箭头分别指向两个Sort,最后两个Sort出来的数据同时输入Merge Join中。

 

分别双击两个Sort,钩选表中的ID,对ID这个字段进行一次排序。因为Merge Join这个流程要求输入的数据是已排序好的。这个排序也可以直接在数据源中对它们的输出字段设置SortKeyPosition这个属性来排序这里我们第一次从Sort拉箭头到Merge Join的时候,会让我们选择这个输入的数据是作为左输入还是右输入,我们按照图示的那样,左边的作为左输入,右边的作为右输入。然后我们双击Merge Join,按照如下图所示设置:

 

这里打钩的是这个流程之后输出的数据,Join Type需要选择为Left outer join,因为左边是我们的原始数据表,右边是我们备份的表,右表可以看成是一个左表的一个子集,如果左表有的数据,右表没有的,那些就是需要新插入备份数据库的数据。本文来自http://www.14271.com/bcnews/bw/20120918334.html

现在我们需要一个分支,即新的数据需要插入备份数据库中,而已有的数据需要更新为新的值。我们从工具栏中拖入一个Conditional Split来进行这样的分支处理。我们将Merge Sort中的输出指向Conditional Split,然后双击Conditional Split,如下图所示设置(注意条件一个是ISNULL,一个是非ISNULL)。

 

这时它们的输入值就被分成两种条件输出,最后我们再拖入一个OLE DB Destination来插入数据和一个OLE DB Command来更新数据库,最终流程如下图:

 

 

双击设置OLE DB Destionation,选择好数据导入的目标数据库中的表,这里需要注意的就是要钩选Keep identity这个选项,因为我创建表的时候对ID字段使用了自增属性。

双击设置OLE DB Command,首先在Connection Managers这个Tab中选择好链接对象,然后在Component Properties这个选项卡中,设置你的SqlCommand属性。如下图:

 

这里的参数值都是用?号来代替,之后在Column Mappings这个Tab中设置代替值实际代替的列,如下图:

 

至此,任务就创建完毕了,没有编写任何代码,直接拖拉完成了。现在可以直接在VS中按F5运行看下效果,我们的目标数据表将插入源数据表中的值。然后我们修改一下原数据表,再来运行一下上面这个任务,就可以在目标数据库中看到更改了。

 

那么如何去定时完成任务哩?这里可以用SQL Server Agent去调用上面我们写好的包, 或者在Windows计划任务中使用DTExec.exe去执行上面的任务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用SSIS创建同步数据库数据任务 的相关文章

  • 将内部联接和 where 子句添加到 INSERT INTO ON DUPLICATE KEY UPDATE

    我从 INSERT INTO ON DUPLICATE KEY UPDATE MySQL 语句开始 INSERT INTO Table1 field1 field2 VALUES 1 2 ON DUPLICATE KEY UPDATE fi
  • Attunity 连接器未显示在 VS 2017、SQL Server 2017 的 SSIS 中

    我看过 VS 2015 的这篇文章 但没有看过 VS 2017 的文章 我已经测试了 Visual Studio 2017 SSDT Enterprise 和 Professional 以及 SQL Server 2017 我遵循了该帖子h
  • 除了连接之外还有其他方法可以提高性能吗?

    除了连接之外还有其他方法可以提高性能吗 编辑 gbn 相关连接或相关子查询与存在子句哪个更好 https stackoverflow com questions 3305891 为什么没有人提到嵌套循环连接 这不是 JOIN 的 替代 方式
  • R模糊字符串匹配根据匹配的字符串返回特定列

    我有两个大型数据集 一个大约有 50 万条记录 另一个大约有 7 万条记录 这些数据集有地址 我想匹配较小数据集中的任何地址是否存在于大数据集中 正如您所想象的那样 地址可以用不同的方式和不同的情况 拼写等来书写 此外 如果只写到建筑物级别
  • 通过非 sf 列内连接两个 sf 对象

    我尝试使用内连接或左连接连接两个 sf 数据帧 这些数据框内部都有几何列 我不断收到错误 check join x y 中的错误 y 应该是一个数据框 对于空间连接 请使用 st joinFALSE 下面的可重现示例 df1 lt data
  • 过早退出 Qualtrics 中的循环和合并块

    我目前正在进行一项 Qualtrics 调查 受访者必须解决一长串字谜问题 然后回答一些人口统计问题 为了使变位词部分更容易 我使用了循环和合并块 第一个字段是要解决的变位词 第二个字段是变位词的解决方案 因此调查可以根据受访者的答案来检查
  • 将插入与 select 语句合并

    这对我有用 MERGE Table1 AS tgt USING SELECT TOP 1 FROM Table2 SELECT itmid FROM Table3 WHERE id id as a WHERE id id AS src ON
  • 访问 SSIS 脚本任务静态构造函数中的可配置值

    我有一个 SSIS 包 其中包含需要第 3 方程序集的脚本任务 由于不允许我将此程序集放置在 SSIS 服务器上的 GAC 中 因此我在运行时在脚本任务的静态构造函数中绑定该程序集 这article https blogs msdn mic
  • Mysql对三表多列的连接查询

    我有三个这样的表 专业化 sid s name 1 test 1 2 test 2 Person pid name sid 1 ABC 1 2 XYZ 2 Timing tid time from time to pid 1 08 00 0
  • SSIS使用列位置而不是名称导入Excel文档

    我想知道是否可以通过按位置引用列来使用 SSIS 导入 Excel 文档 例如 导入列 A D M AA 等 我问这个问题是因为我需要从第三方加载多个 Excel 文档 每个文档在相应的列中包含相同的数据类型 但每个文档的列名称不同 Tha
  • 合并具有一个共同元素的集合 R

    我有一个这样的列表 lista list lista 1 c 1 2 4 6 8 9 10 11 12 19 32 34 35 36 37 38 lista 2 c 7 8 lista 3 c 13 14 16 26 27 28 29 30
  • 显式与隐式 SQL 连接

    显式内连接与隐式内连接之间有效率差异吗 例如 SELECT FROM table a INNER JOIN table b ON a id b id vs SELECT a b FROM table a table b WHERE a id
  • Pandas 连接问题:列重叠但未指定后缀

    我有以下数据框 print df a mukey DI PI 0 100000 35 14 1 1000005 44 14 2 1000006 44 14 3 1000007 43 13 4 1000008 43 13 print df b
  • R data.table 多个条件连接

    我设计了一种解决方案 用于从两个单独数据表的多个列中查找值 并添加基于新列的值计算 多个条件比较 代码如下 它涉及在计算两个表中的值时使用 data table 和联接 但是 这些表没有联接在我正在比较的列上 因此我怀疑我可能无法获得 da
  • ORA-00933 与内部联接和“as”混淆

    我有一个使用以下命令从两个表中获取数据的查询inner join 但我收到错误SQL command not properly ended as 下面有一个星号 select P carrier id O order id O aircra
  • Google Play Beta:“应用程序不适用于此帐户”消息

    有没有人遇到过所有成员都遇到的问题谷歌测试组能够获得测试版 除了一个问题之外没有任何问题 这位拥有有效 Gmail 地址的用户已加入用于 Beta 测试的 Google Grouped 作为管理员 我可以看到他们的状态是member 当他们
  • 如何使用 R 将每个文件的数据添加为附加行,从而将不同的 .csv 文件合并为一个完整的文件?

    我有几个不同的文件夹 它们都包含一个 csv 文件 所有这些 csv 文件都有一个单独的列 其中包含实验的一种条件的数据 我想以将每个文件的数据添加为新列的方式合并这些 csv 文件 目前 它看起来像这样 C1 csv 102 106 15
  • 简单的 Linq 查询对同一个表有重复的连接?

    来自 Julia Lerman 的新实体框架书中的示例 我有一个包含两个表的数据库 联系人和地址 Contact 表有一个 ContactID int 以及名字 姓氏等 Address 表有一个 ContactID 以及城市 州 邮政编码等
  • 3 个表的 SQL 查询(或联接)

    第一次在 Stack Overflow 上问问题 很棒的资源 但是只有一件事真正让我作为 SQL 新手感到困惑 我有三个表 我想获取与鲍勃的学生相关的所有导师的姓名 表 1 教师 ID Name 1 Bob 表 2 学生 STUDENT I
  • dplyr:连接中的 NSE (by)

    我很难弄清楚如何使用 dplyr left join 和 NSE 连接两个表 问题是我无法为 by 提供正确的值 我想我现在已经找到了解决方案 但感觉我正在以一种额外复杂的方式来做 因此 如果您知道更简单 更优雅的解决方案 请告诉我 这就是

随机推荐

  • 【数据结构】链表

    数据结构 链表 1 链表的概念及结构 链表是一种物理存储单元上非连续 非顺序的存储结构 数据元素的逻辑顺序是通过链表中的指针链接次序实现的 链表由一系列结点 链表中每一个元素称为结点 组成 结点可以在运行时动态生成 每个结点包括两个部分 一
  • Qt 安装包制作(基于Qt Installer Framework)

    目录 下载 Qt Installer Framework 程序打包发布 创建安装包程序 下载 Qt Installer Framework 官方下载 http download qt io official releases qt inst
  • 此URL不支持Http方法GET

    出现删除问题的解决办法是 需要把代码中的super注释掉 super doGet req resp super doPost req resp 原来报错的代码 修改之后的代码 记得修改之后 重启一下tomcat就可以了
  • java连接多个mysql_Java连接到多个数据库

    我正在创建一个连接到多个数据库的Java应用程序 用户将能够从下拉框中选择要连接的数据库 然后 程序通过将名称传递给创建初始上下文的方法来连接到数据库 以便它可以与oracle Web逻辑数据源进行通信 public class dbMai
  • 用tensorflow实现基本的word2vec

    Basic word2vec implementation through tensorflow from future import absolute import from future import division from fut
  • 第四步:STM32F4 GPIO介绍

    1 0 STM32F407ZGT6引脚说明 STM32F407ZGT6 一共有7组IO口 每组IO口有16个IO 一共16X7 112个IO 外加2个PH0和PH1 一共114个IO口 GPIOA GPIOB GPIOG PH0 PH1 1
  • mac电脑安装Android studio

    1 安装Android studio 在官网下载安装包https developer android google cn studio 下载时需要根据mac电脑的处理器选择不同版本 在关于本机中查看一下处理器类型就行 然后点击dmg安装包进
  • 鸿蒙应用开发:安装DevEco Studio及环境配置

    一 安装DevEco Studio 1 找到官网下载开发工具 DevEco Studio官网 2 解压下载好的压缩包 3 关闭杀毒软件并以管理员身份运行 4 在如下界面勾选DevEco Studio 直到安装完成 二 下载HarmonyOS
  • 8种日志级别

    优先级从高到低依次为 OFF FATAL ERROR WARN INFO DEBUG TRACE ALL ALL 最低等级的 用于打开所有日志记录 TRACE 很低的日志级别 一般不会使用 DEBUG 指出细粒度信息事件对调试应用程序是非常
  • docker容器的网络信息查看

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 查看容器的IP地址 可以在主机上运行 sudo docker ps 查看正在运行的容器的id等信息 sudo docker inspect 容器id 查看到容器的相关信息
  • win2003 DNS服务器配置方法[图文详解]

    目前很多企业事业单位都建立了单位内部的局域网 网络内部都配备相关的服务器 如web ftp等服务器 内部网络的用户都希望所有的服务器都用域名来访问 网络管理员可以采用在内部搭建DNS服务器的方式来实现 width 680 height 20
  • 蓝牙BLE---DA14585的外部中断使用

    DA14585的标准SDK中并没有找到GPIO外部中断的使用例程 但是外部中断并不难配置 看看GPIO C和GPIO H这两个文件就知道怎么做了 下面三行代码是初始化设置 void gpio init GPIO SetPinFunction
  • 基于SpringBoot的电子招标投标管理系统

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端框架 SpringBoot 前端 HTML Vue 数据库 MySQL5 7 数据库管理工具 Navicat 12 服务器 Tomcat8 5 开发软件 IDEA Ecl
  • 京东首页实战(带商品栏)

    效果展示 在这里插入图片描述 https img blog csdnimg cn cdb0bf89b2b9415f814 项目结构 需要联系 224 855 7717
  • MySQL进阶面试题完全攻略

    除了基础题部分 本文还收集整理的MySQL面试题还包括如下知识点或题型 MySQL高性能索引 SQL语句 MySQL查询优化 MySQL高扩展高可用 MySQL安全性 问题1 char varchar的区别是什么 varchar是变长而ch
  • 雪过天晴:OTA熬过旅游业寒冬

    旅游业新年开门红的热闹余音犹在 OTA平台走入三年来最具总结意义的一个财报季 继携程 途牛后 同程旅行于3月21日公布了2022年全年财报 数据显示 2022年 同程旅行实现收入65 8亿元 经调整净利润6 5亿元 其中每个季度都保持了盈利
  • 再造STM32---第十九部分:I2C—读写 EEPROM

    本章参考资料 STM32F4xx 参考手册 STM32F4xx 规格书 库帮助文档 stm32f4xx dsp stdperiph lib um chm 及 I2C 总线协议 若对 I2C 通讯协议不了解 可先阅读 I2C 总线协议 文档的
  • stm32学习笔记-esp8266wifi模块连接云平台测试

    文章目录 一 ATK ESP8266模块简介 二 测试AT指令连接新大陆物联网云平台 一 ATK ESP8266模块简介 官方使用手册截图如下 我们知道这个wifi模块有三种模式 其串口通信波特率为115200 数据位为8 停止位为1 测试
  • 史上最全圣杯布局(转自前端神三元)

    圣杯布局如图 而且要做到左右宽度固定 中间宽度自适应 1 利用flex布局
  • 使用SSIS创建同步数据库数据任务

    SSIS SQL Server Integration Services 是用于生成企业级数据集成和数据转换解决方案的平台 使用 Integration Services 可解决复杂的业务问题 具体表现为 复制或下载文件 发送电子邮件以响应