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

先简单的演示一下使用 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 Package 结构,最外面的是一个数据流 DF_Lookup。

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

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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据
, lookup
, 组件
, 数据源
, lk
, lk bin
, 0123
nvarchar
ssis 查找组件、ssis脚本组件、ssis 脚本组件 列、ssis 组件日志、ssis组件,以便于您获取更多的相关知识。

时间: 2024-09-29 06:02:26

SSIS 系列:Lookup 组件的使用与它的几种缓存模式的相关文章

Lookup组件的使用与它的几种缓存模式:Full Cache,Partial Cache,NO Cache

先简单的演示一下使用 Lookup 组件实现一个简单示例 - 从数据源表 A 中导出数据到目标数据表 B,如果 A 数据在 B 中不存在就插入新数据到B,如果存在就更新B 和 A 表数据保持统一. 随后再来解释在这个过程中使用到的一些术语,以及分析一下 Lookup 中出现的几种缓存模式,各自的特点以及常用的场合. 两张表,一张是目标表 DEMO_LK_Customer,一张是 DEMO_LK_LegacyCustomer  旧系统表.我们可以理解我们这个示例要实现的目标是 DEMO_LK_Cu

SSIS 系列

SSIS 系列 - Merge, Merge Join, Union All 合并组件的使用以及Sort 排序组件同步异步的问题 SSIS Data Flow 中有几个组件可以实现不同数据源的数据合并功能,比如 Merger, Merge Join 和 Union All.它们的功能比较类似,同时也比较容易混淆,下面是对它们之间的区别的对比总结. 下面通过三个 Data Flow 来演示这三个组件的使用以及相关的配置. 测试数据源 - 第一个数据源是一张表 USE BIWORK_SSIS GO

JS组件系列——表格组件神器:bootstrap table(三:终结篇,最后的干货福利)

原文:JS组件系列--表格组件神器:bootstrap table(三:终结篇,最后的干货福利) 前言:前面介绍了两篇关于bootstrap table的基础用法,这章我们继续来看看它比较常用的一些功能,来个终结篇吧,毛爷爷告诉我们做事要有始有终~~bootstrap table这东西要想所有功能覆盖似乎不太现实,博主挑选了一些自认为比较常用的功能在此分享给各位园友.源码也在这篇统一给出.好了,不多说废话,开始我们的干货之旅吧. bootstrap table系列: JS组件系列--表格组件神器

JS组件系列——表格组件神器:bootstrap table(二:父子表和行列调序)

原文:JS组件系列--表格组件神器:bootstrap table(二:父子表和行列调序) 前言:上篇 JS组件系列--表格组件神器:bootstrap table 简单介绍了下Bootstrap Table的基础用法,没想到讨论还挺热烈的.有园友在评论中提到了父子表的用法,今天就结合Bootstrap table的父子表和行列调序的用法再来介绍下它稍微高级点的用法. bootstrap table系列: JS组件系列--表格组件神器:bootstrap table JS组件系列--表格组件神器

JS组件系列——表格组件神器:bootstrap table

原文:JS组件系列--表格组件神器:bootstrap table 前言:之前一直在忙着各种什么效果,殊不知最基础的Bootstrap Table用法都没有涉及,罪过,罪过.今天补起来吧.上午博主由零开始自己从头到尾使用了一遍Bootstrap Table ,遇到不少使用方面的问题,也做了一部分笔记,在此分享出来供需要使用的园友参考.还记得前两天有园友加群问我Bootstrap Table的使用问题,呵呵,巧了,今天博主也遇到同样的问题了,在此还是要表示抱歉,没有将这篇提前发出来. bootst

通过SSIS的“查找”组件进行不同数据源之间数据的合并操作

原文:通过SSIS的"查找"组件进行不同数据源之间数据的合并操作   为了协助开发还原生产环境中的某些bug,需要将将生产环境的某些特定表数据导入到测试环境做测试,之前一直都是暴力地truncate测试环境的表,然后用SSIS将生产环境对应的整张表数据导入测试环境,简便快捷后来开发提出来,保留测试环境已有的数据,只同步差异的数据(根据主键),于是就尝试使用SSIS中的"查找"组件进行不同服务器之间的"存在则更新,不存在则插入"数据合并操作,实际操

微软BI 之SSIS 系列 - 使用 Script Task 访问非 Windows 验证下的 SMTP 服务器发送邮件

原文:微软BI 之SSIS 系列 - 使用 Script Task 访问非 Windows 验证下的 SMTP 服务器发送邮件 开篇介绍 大多数情况下我们的 SSIS 包都会配置在 SQL Agent Job 中周期性的按计划执行,比如每天晚上调用 SSIS 包刷新数据,处理 Cube 等.一旦 SSIS 包中出现任何异常,报错,那么配置在 SQL Agent Job 中的通知,邮件提醒就会把这些错误信息发邮件到指定的用户或者系统维护者,这样就起到了一个错误监控的作用. 但是在有的情况下,有一些

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

原文:如何在SSIS的脚本组件中访问变量 这是一个小问题,我们在SSIS的设计中很多地方都会用到变量,我习惯性地将"变量"和"表达式"称为SSIS的灵魂,虽然不见得绝对准确,但它们确实是保证一个SSIS包灵活性的根本. 同时,我们可能也会在数据流任务中添加"脚本组件",用我们熟知的C#或者VB.NET编写一些数据转换处理的逻辑.这里可能就有一个需求,我们希望在脚本组件中访问变量(读或者写),但默认情况下,这个需求并不是那么容易实现.我们来看下面的

Android组件系列----Activity组件详解

[正文] 注:四大组件指的是应用组件:Activity.Service.BroadcastReceiver.ContentProvider:之前的控件指的是UI组件. 博文目录: 一.Activity简介 二.Activity的状态和生命周期 三.Activity的基本用法 四.向下一个Activity传递数据 五.返回数据给上一个Activity 六.Activity运行时屏幕方向与显示方式 七.Activity的现场保存 八.Activity通过SharedPreferences保存数据 一