SSIS: 一步步教你在SSIS 中使用临时表

需求:

存在 A 和 B 两个数据库,他们都存在 一个 T1 表,A 数据库的T1 表是源, B数据库的T1表是目的,我们要使 两个表保持同步,即:A.T1存在, B.T1 表不存在则插入。

解决方案:

1.在B 数据库中创建一个临时表 TestTmp,存储 A.T1 中的数据

2.比较 B.TestTmp和 B.T1的数据

如果一条记录在B.TestTmp存在,B.T1不存在,则将此记录插入到 B.T1表中。

声明: 用 SSIS2015数据库代替 A数据库。 用TSQL2012数据库可以代替 B数据库。

准备工作:

1.在SSIS2015数据库中创建T1 表,并插入数据:

--A database T1 table

if OBJECT_ID(‘dbo.t1‘) is not null
drop table dbo.T1;
go 

create table dbo.T1
(
[Key] int not null,
col1 nvarchar(10) null
);
go

insert into dbo.T1([Key],col1)
values  (1,‘1‘),
        (2,‘2‘),
        (3,‘3‘),
        (4,‘4‘),
        (5,‘5‘),
        (6,‘6‘),
        (7,‘7‘),
        (8,‘8‘),
        (9,‘9‘)

2.在 TSQL2012 中创建T1表

if OBJECT_ID(‘dbo.t1‘) is not null
drop table dbo.T1;
go 

create table dbo.T1
(
[Key] int not null,
col1 nvarchar(10) null
);
go

insert into dbo.T1([Key],col1)
values  (1,‘1‘),
        (2,‘2‘),
        (3,‘3‘)

步骤:

1.使用一个 Execute SQL Task, 重命名为 Create temp table,在sql statement 属性栏中输入下面的代码 去创建对应的临时表。选择需要的connection,在这里,我使用本地的   Server,Database 使用 TSQL2012 作为 B 数据库,即源数据库. 其他属性保持默认设置。详细信息可以参考图 1-1.

注意,在使用临时表时, 对应的Connection 的属性RetainSameConnection 要设置为true(参考 图片1-2进行设置)

The sql statement:

if OBJECT_ID(‘tempdb..#TestTmp‘) is not null
drop table dbo.#TestTmp

CREATE TABLE #TestTmp(
    [key] int not null,
    col1 varchar(10) null
    )

Excute sql task 截图:

图 1-1

图 1-2

2.拖一个 DataFlow Task,缓存SSIS2015中的数据到 TSQL2012数据库中的临时表。

  2.1获取SSIS2015中的数据。

在DataFlow Task 中拖一个OLE DB Source 组件。获取SSIS2015.T1表中的数据。

OLE DB Source 组件的属性设置如下图:

2.2 将从SSIS2015.T1表中获取到的数据插入到 TSQL2012数据库中的临时表中。

拉取一个OLEDB Destination 组件,将数据插入到TSQL2012数据库中的临时表中,按照下图配置组件属性。(注意,设置该组件的ValidateExternalMetadate属性为 False.卢静:右击该组件,选择 properties,在 commen properties中找到该属性,并设置其为False.)

3.用一个Excute sql task,插入 存在于临时表但是不存在在SSIS2015.T1的数据 到SSIS2015.T1中。

参考下图设置该组件属性

The sql statement:

insert into dbo.T1([key],col1)
select [Key],col1
from dbo.#testtmp as tmp
where not exists
(
select 1
from dbo.t1
where t1.[key]=tmp.[key])

4.用一个Excete sql task 删除临时表。

参考下图设置属性:

The sql statement:

if OBJECT_ID(‘tempdb..#TestTmp‘) is not null
drop table dbo.#TestTmp

现在设置完成了, 我们运行一下 该 package, 按 F5 或是点击 start 在工具栏, package 将运行成功。

再查看一下数据,铛铛铛,数据插入成功了!

如果该解决方案帮助了你,请帮忙顶一下,非常感谢。

版权声明: 如有引用,请注明引用出处,保留该博客所有版权。

时间: 2024-10-24 04:47:33

SSIS: 一步步教你在SSIS 中使用临时表的相关文章

一步步教你js原生瀑布流效果实现

一步步教你js原生瀑布流效果实现 什么是瀑布流效果 首先,让我们先看一段动画: 在动画中,我们不难发现,这个动画有以下特点: 1.所有的图片的宽度都是一样的 2.所有的图片的高度是不一样的 3.图片一张挨着一张竖直排列 4.鼠标向下滚动,一直不停的加载图片 5.浏览器的宽度改变,图片的列数会进行相应的更改 那么这种效果类似现实生活中的瀑布,所以我们叫它瀑布流的效果. Js原生瀑布流效果的实现 从上述分析中,我们可以把整个效果分为以下四个部分: html+css界面搭建 瀑布流效果 浏览器向下滚动

【java项目实战】一步步教你使用MyEclipse搭建java Web项目开发环境(一)

首先,在开始搭建MyEclipse的开发环境之前,还有三步工具的安装需要完成,只要在安装配置成功之后才可以进入下面的java Web项目开发环境的搭建. 1.安装工具 第一步,下载并安装JDK,到官网上下载安装即可,之后需要细心的配置环境变量,我给大家推荐百度文库的一篇文章,猛戳这里. 第二步,下载Tomcat,当然可以去Apache Tomcat的官网,同样,您可以移驾到我的资源下载,外送API文档(免资源分). 第三步,下载MyEclipse,MyEclipse官网,傻瓜式安装即可. ===

实例学习SSIS(五)--理论介绍SSIS

原文:实例学习SSIS(五)--理论介绍SSIS 导读: 实例学习SSIS(一)--制作一个简单的ETL包 实例学习SSIS(二)--使用迭代 实例学习SSIS(三)--使用包配置 实例学习SSIS(四)--使用日志记录和错误流重定向 实例学习SSIS(五)--理论介绍SSIS    一.概述 Integration Services 是用于生成高性能数据集成和工作流解决方案(包括针对数据仓库的提取.转换和加载 (ETL) 操作)的平台. Integration Services 包括: a)生

教你在Linux中如何用命令或手动修改文件来添加一个用户

教你在Linux中如何使用命令或手动修改文件添加一个用户 首先我们从一个例子进行引入:添加一个happy用户,基本组为happy(5200),附加组为luzhi. 一.用命令的方法实现: groupadd -g 5200 happy useradd -u 5200 -g happy -G luzhi  happy passwd happy su - happy 这样就这个用户就创建成功了. 下面来演示一下: 验证系统中是否存在happy用户,从输出看是没有存在happy用户的. 2.我们先建一个

手把手教你写Sublime中的Snippet

手把手教你写Sublime中的Snippet Sublime Text号称最性感的编辑器, 并且越来越多人使用, 美观, 高效 关于如何使用Sublime text可以参考我的另一篇文章, 相信你会喜欢上的..Sublime Text 2使用心得 现在介绍一下Snippet, Snippets are smart templates that will insert text for you and adapt it to their context. Snippet 是插入到文本中的智能模板并

教你从进程中判断病毒木马的存在

教你从进程中判断病毒木马的存在 任何病毒和木马存在于系统中,都无法彻底和进程脱离关系,即使采用了隐藏技术,也还是能够从进程中找到蛛丝马迹,因此,查看系统中活动的进程成为我们检测病毒木马最直接的方法.但是系统中同时运行的进程那么多,哪些是正常的系统进程,哪些是木马的进程,而经常被病毒木马假冒的系统进程在系统中又扮演着什么角色呢?请看本文. 病毒进程隐藏三法 当我们确认系统中存在病毒,但是通过“任务管理器”查看系统中的进程时又找不出异样的进程,这说明病毒采用了一些隐藏措施,总结出来有三法: 1.以假

Kail Linux渗透测试教程之在Metasploit中扫描

Kail Linux渗透测试教程之在Metasploit中扫描 在Metasploit中扫描 在Metasploit中,附带了大量的内置扫描器.使用这些扫描器可以搜索并获得来自一台计算机或一个完整网络的服务信息.本节将介绍使用Metasploit中的辅助模块实现扫描. [实例4-4]在Metasploit中,扫描目标主机.具体操作步骤如下所示: (1)启动MSF终端.执行命令如下所示: root@kali :~# msfconsole msf> (2)搜索所有可用的扫描模块.执行命令如下所示:

贵阳SEO 教你建站中让wordpress最新评论列表更美观的代码及添加方法

贵阳SEO请添加链接描述 教你建站中让wordpress最新评论列表更美观的代码及添加方法 在我们的网站建设过程中,使用wordpress默认的最新评论,大家是不是觉得太单调了,也不是很美观,并且也 不能按照我们的需求列表显示最新评论的内容,贵阳SEO今天分享给大家一段修改方便的带有头像的最新评论列 表代码,添加方法如下:1.打开需要显示最新评论列表的文件(一般在网站的侧边栏sidebar.php中):2.在合适的位置添加以下代码:<?php$show_comments = 8; //评论数量$

大佬教你在springMVC中使用dubbo注解配置的问题

问题,在controller中无法通过注解自动注入dubbo服务,但是在service中可以自动注入.package com.sl;br/>@Controllerpublic class P{br/>//期望注入dubbo服务@Reference(version="1.0.0")private I0 o;br/>//注入service@Autowiredprivate S s; @RequestMapping("p")public void p()