SSIS 实现update,delete,insert
2008-06-04 17:33
274 查看
SSIS 实现update,delete,insert
在数据库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的数据;
在数据库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的数据;
相关文章推荐
- SSIS 实现update,delete,insert
- SQL Server 2008中SQL增强之三:Merge(在一条语句中使用Insert,Update,Delete) 一条语句实现两表同步(添加、删除、修改)
- [转]Insert, Update, and Delete Destination table with SSIS
- JavaBean 实现Mysql数据库操作(Query、Insert、Delete、Update)
- [DB][Oracle]如何用一个SQL文实现Insert/Update/Delete和--MERGE命令详解
- Mark:Insert, Update, and Delete Destination table with SSIS
- SQL Server的Merge —— 一步实现 insert,update,delete
- SQL Server中的XML数据进行insert、update、delete操作实现代码
- DButils的QueryRunner类实现对数据表的insert,delete,update
- JavaBean 实现Mysql数据库操作(Query、Insert、Delete、Update)
- SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,语句INSERT、DELETE、UPDATE实现( )功能。
- oracle中execute immediate的使用(select/insert/update/delete)(
- 3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的区别,sql文件导入
- LINQ to SQL 语句之Insert/Update/Delete 操作
- 自动生成数据库表的insert,update,delete存储过程工具
- oracle实现 无则insert插入,有则update更新,一条语句直接进行insert/update操作
- MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句
- 转:用Delphi实现从Excel数据Update(Insert类似)到Oracle数据库表中
- update操作是先delete后insert的吗?
- MySQL表操作 insert-delete-update-select