- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实现update
SSIS 实现update,delete,insert
[日期:2008-07-02]?? 来源:互联网整理? 作者:佚名?? [字体:大 中 小] ????新闻简介:在数据库ETL时,ETL 有两种类型的数据表提取:全部源提取,其中无法标识更改的或新的记录;递增提取,其中只提取新的记录和更改的记录。
????????关 键 词:??
在数据库ETL时,ETL 有两种类型的数据表提取:全部源提取,其中无法标识更改的或新的记录;递增提取,其中只提取新的记录和更改的记录。在这里我将简单介绍一下利用SQL Server 2005 集成服务(SSIS)如何实现全部源提取的思路,如果不能理解,欢迎发邮件和我交流。案例:在源系统上,有些记录包含在表中,该表不标识新的或已修改的记录,因此 ETL 过程必须比较源表和目标表之间的记录以标识更改发生的时间。然后正确地处理插入或更新。
思路如下:第一步: 对源表和目标表使用全部合并连接和完整数据集。全部连接有助于标识库存记录添加到源中的时间或完全删除的时间。使用配置为全部连接的 Merge Join 转换满足此要求。注:由于要使用Merge Join 转换,必须是有序的,如果用order排序组件在大数据量时效率不高,因此可以事先用order by排序。为此,数据流需要注意:源已排序以及排序所应用的列和方向。这是在 Source Connection 的 Advanced Editor(高级编辑器)中完成的。在 Input and Output Properties(输入和输出属性)选项卡上,请查看 OLE DB Source Output(OLE DB 源输出)的顶级属性,有一个名为 IsSorted 的属性,它需要设置为 True。第二,需要通过 Output Columns(输出列)容器中的 SortKeyPosition 属性指定排序的列。然后数据流将认可此排序。第二步:利用Conditional Split分别拆分三个和一个默认的如下所示:Insert 为目标表主键为空;Delete? 为源目标表主键为空;Unchanged 为源和目标表为发生变化的分别比较每列;Update?? 剩下的也就是默认的就是需要Update的数据;
?
If you believe an article violates your rights or the rights of others, please contact us.
0
顶一下
文档评论(0)