ssis数据增量抽取

ssis里如何做到多数据源、增量抽取

 

 

测试环境:两个excel 数据源 A: ID,NAME  B:ID,DANWEi ,一个oledb数据源 ttidnamedanwei

目的:将两个数据源连接以后,写入oldeb数据源tt

 

新建ssis项目,会自动生成ssis包,把【数据流任务】从工具箱中拖入控制流中,双击【数据流任务】,进入【数据流】,从工具箱拖入两个【excle数据源】,将其名字分别改为ab,双击进行配置,然后从【工具箱】里拖入【排序】,因为合并连接之前必须要先排序,双击【排序】,就行配置,选择按某列排序和升序或这降序,然后在拖入【合并连接】,然后双击

【合并连接】就行配置,选择连接的方式:比如左连接、右连接,内部连接等,配置完了以后,拖入【oledb目标】,双击配置数据源,这时会自动生成表的脚本,整个流程结束:

 

执行ssis包,如果执行成功,会以绿颜色的形式显示,而且会显示影响的行数。具体可以看进度。

 

2、更新插入

和上边一样拖入【数据流任务】,双击拖入两个【oledb源】,进行配置编辑,分别更名为

Db_productdz_type,拖入两个【排序】,然后拖入【合并连接】,然后拖入【查找】,在拖入【oledb目标】,配置【oledb目标】,双击【查找】, 在选择目标数据源,在 选择你的目标数据表,在 选择h_id,在【配置错误输出】,在【错误】那块选择【重新定向】,单击确定,然后拖入

oledb命令】,在 选择目标数据源,在【组建属性】里的【sqlcommand】里输入

update iiii set h_type=?,h_name=?,type_name=?,h_id=? where h_id=?,在列映射把列名和变量做一一对应,整个流程结束。如下图

执行完成以后,

其实也可以用变量,按照时间段抽取,返回控制流,拖入【执行sql任务】,点击【ssis】在下拉菜单中选择【变量】,然后新建变量如下图

返回数量任务,对db_product 进行编辑,

访问模式选择【sql命令】,然后输入:

select * from db_product

where h_input_date>=?

and h_input_date<=?,点击参数,将参数和刚才声明的变量对应

,返回【执行sql任务】,在本地的master数据库新建立一张表,来确定开始时间和结束时间,

表脚本

/*

create table 传输日期(ksrq datetime, jsrs datetime )

 

insert 传输日期

select  '2008-01-01','2008-03-01'

*/

其实的目的就是把这两个字段的值传入到变量里去,如果要修改传输时间,直接修改传输日期这张表就行。

在连接类型选择oledbconnection里选择本地master表,sql statement里输入

select ksrq as a ,jsrq as b from 传输日期 ,然后在结果集中做一映射,在结果集中选择单行,确定以后整个流程结束。

 

下边是引用邹建在csdnblog里例子,整个例子很详细的讲了foreach容器的用法,ssis也可以用脚本组建,功能强大,建议看一下微软的msdn

 

你可能感兴趣的:(ssis数据增量抽取)