加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SSIS 系列:Lookup 组件的使用与它的几种缓存模式 - Full Cache

发布时间:2016-08-10 06:33:45 所属栏目:MsSql教程 来源:站长网
导读:先简单的演示一下使用 Lookup 组件实现一个简单示例 - 从数据源表 A 中导出数据到目标数据表 B,如果 A 数据在 B 中不存在就插入新数据到B,如果存在就更新B 和
先简单的演示一下使用 Lookup 组件实现一个简单示例 - 从数据源表 A 中导出数据到目标数据表 B,如果 A 数据在 B 中不存在就插入新数据到B,如果存在就更新B 和 A 表数据保持统一。

随后再来解释在这个过程中使用到的一些术语,以及分析一下 Lookup 中出现的几种缓存模式,各自的特点以及常用的场合。

两张表,一张是目标表 DEMO_LK_Customer,一张是 DEMO_LK_LegacyCustomer  旧系统表。我们可以理解我们这个示例要实现的目标是 DEMO_LK_Customer 表的数据要和DEMO_LK_LegacyCustomer 实现同步,保持一致。

USE BIWORK_SSIS
GO
    
-- Look up demo table
IF OBJECT_ID('DEMO_LK_Customer','U') IS NOT NULL
DROP TABLE DEMO_LK_Customer 
GO
    
IF OBJECT_ID('DEMO_LK_LegacyCustomer','U') IS NOT NULL
DROP TABLE DEMO_LK_LegacyCustomer 
GO
    
CREATE TABLE DEMO_LK_Customer
(
    CustomerID INT PRIMARY KEY, 
    CustomerCompany NVARCHAR(255), 
    CustomerName NVARCHAR(20),
    CustomerAddress NVARCHAR(255)
)
    
CREATE TABLE DEMO_LK_LegacyCustomer
(
    CustomerID INT PRIMARY KEY, 
    CustomerCompany NVARCHAR(255), 
    ContactName NVARCHAR(20),
    ContactTitle NVARCHAR(50),
    CustomerAddress NVARCHAR(255)
)
    
INSERT INTO DEMO_LK_Customer VALUES
(1,'HFBZG','Allen,Michael','Obere Str. 0123'),
(2,'MLTDN','Hassall, Mark','Avda. de la Constitución 5678'),
(3,'KBUDE','Peoples, John','Mataderos  1000')
    
INSERT INTO DEMO_LK_LegacyCustomer VALUES
(1,'NRZBB','Allen,Michael','Sales Representative','Obere Str. 0123'),
(2,'MLTDN','Hassall, Mark','Owner','Avda. de la Constitución 5678'),
(3,'KBUDE','Peoples, John','Owner','Mataderos  7890'),
(4,'HFBZG','Arndt, Torsten','Sales Representative','7890 Hanover Sq.'),
(5,'HGVLZ','Higginbotham, Tom','Order Administrator','Berguvsvgen  5678')
    
SELECT * FROM DEMO_LK_Customer
SELECT * FROM DEMO_LK_LegacyCustomer
--UPDATE DEMO_LK_Customer SET CustomerName = ?, CustomerCompany = ?, CustomerAddress = ? WHERE CustomerID = ?
--UPDATE DEMO_LK_Customer SET CustomerName = ? WHERE CustomerID = ?
--UPDATE DEMO_LK_Customer SET CustomerAddress = ? WHERE CustomerID = ?

在测试数据中,我们认为两张表的 ID 都是不变的唯一的,第1条数据和第3条数据不一致,第4条和第5条数据在目标表中不存在。

SSIS 系列:Lookup 组件的使用与它的几种缓存模式 - Full Cache

先看一下实现这个例子的 SSIS Package 结构,最外面的是一个数据流 DF_Lookup。

SSIS 系列:Lookup 组件的使用与它的几种缓存模式 - Full Cache

在数据流中,数据源 OLE_SRC_LegacyCustomer 在这个例子中使用的是 SQL Server 数据库表,但是这个数据源也可以是文本文件,Excel 或者其它数据库的表或者查询的结果集。

这个数据源相对于 Lookup 组件 LKP_Customer 来说是 Lookup 组件的输入项。

LKP_Customer 之后有两个分支 - 匹配和不匹配分支,做的事情就是匹配的数据做更新,不匹配的数据做插入动作。

SSIS 系列:Lookup 组件的使用与它的几种缓存模式 - Full Cache

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读