通过SSIS设计ETL来将Oracle/DB2/Sybase等数据源的数据定期导入到数据仓库(一)

方法其实不止一种,我介绍一种使用DataReader数据源的方法。

 

最基本的前提是,在执行SSIS的服务器上需要有安装相应数据源的Provider,比如你需要从Oracle8.1的数据库中导入数据,那么在SSIS服务器上就要安装Oracle8.1的驱动,或者安装一个Oracle8.1的客户端。

 

第一步:定义变量,建议定义为DateTime类型,作用域为整个包。

(不知为何不让我上传图片,干说吧)

 

第二步:变量赋值,使用“执行SQL任务”控件,通过SQL语句取得目的表中的最大日期,并在“结果集”标签页中,将结果赋值给变量。

 

第三步:在控制流中加入“数据流任务”,在任务流中加入“DataReader数据源”,然后在数据流任务的属性中找到“Expression”选项,在其后的“属性表达式编辑器”中找到DataReader数据源的SQLCommand属性,并在表达式框中输入带变量的SQL表达式,例如:

"select * from Table
where date >= to_date('"+ (DT_WSTR,20) (DT_DBDATE) @[用户::Dt_Max_fact]+"','yyyy-mm-dd')"

上述语句需要符合数据源的语法要求,如果数据源是Oracle,那么这段SQL就要符合Oracle的语法要求,其他数据源也类似。可以点击“计算结果值”来查看是否正确。

另外需要注意的是,在DataReader数据源控件中的“连接管理器”选项中,需要选择“ADO.Net”类型的数据源,并且在DataReader数据源控件的SQLCommand选项中直接写入"select * from Table",这样就可以在设计阶段与数据目标做字段对应,而在执行包的时候则会调用Expression选项中的SQLCommand中的内容。

 

这样就可以将变量应用到读取数据源的SQL中啦

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值