背景
在工作中,我想对业务系统的日志信息进行分析,需要将日志信息抽取到另外一个表里,由于日志表的数据量庞大,我只需要从某一特定时间开始对业务系统产生的日志抽取出来,而且需要每5分钟(假定)进行抽取一次,把在这5分钟内产生的日志信息抽到我的表里面,产生一个增量抽取的效果。
解决过程
在网上找了很多的资料,关于SSIS数据抽取的有不少,但是增量抽取的解决方法不多,而且有的看起来比较复杂。下面分享下我的解决方法。
解决思路
1. 创建SSIS包
2. 在SSIS包中设置开始时间和结束时间的变量
3. 在数据库中创建一张时间表,里面记录开始时间
4. 在SSIS包中创建执行SQL任务,将时间表里的开始时间以及运算的结束时间赋给包中的开始和结束时间变量
5. 创建数据流任务
6. 在数据流任务中添加OLE DB源和 OLE DB目标
7. 在OLE DB源中执行带有参数的SQL语句,将包变量开始时间和结束时间赋给语句的参数
8. 连接OLE DB源和 OLE DB目标,完成数据流任务
9. 创建执行SQL任务,更新时间表中的开始时间 10. 连接各部分完成SSIS包并执行。
开发环境
1. Windows 7 64位操作系统
2. SQL SERVER 2008 R2 的SQL ServerBusiness Intelligence Development Studio 3. 使用的数据库自然是SQL SERVER 2008 R2啦。
关键点分析
1. 如何将时间表的时间取出来赋值给包的两个变量:开始时间和结束时间 2. 在OLE DB源如何执行带有包变量的SQL语句。
准备
1. 创建数据库BITest
2. 创建业务系统的日志表logs(模拟的)
insert intodbo.logs
select'日志信息','2014-11-14 23:00: