SSIS 如何增量抽取

0
如题,各位大神小弟遇到一个问题。

在数据量很大的情况下SSIS 如何增量抽取新的数据到数据仓库,还望给出个例子
已邀请:
1

梁勇 - 天道酬勤、上善若水。爱好商业智能 2014-05-26 回答

给你提供一个思路,首先创建一个日志表,日志表记录最后一次抽取的日志信息。然后 更新日志表,获取本次抽取最大的时间戳,取出中间的数据,即对应的增量抽取。。
具体Coding如下:

日志表

/*
功能说明: 日志表记录最后一次抽取的日志信息
修改说明: Create by LY on 2012-5-22
*/
IF NOT EXISTS (SELECT *
FROM sys.objects
WHERE object_id = Object_id(N'Fact_ETL_Table')
AND type IN ( N'U' ))
CREATE TABLE [dbo].Fact_ETL_Table
(
[ID] [INT] IDENTITY(1, 1) PRIMARY KEY NOT NULL,
[Name] [url=20]NVARCHAR[/url] NOT NULL,
[Description] [url=100]NVARCHAR[/url] NULL,
[Prevdatetime] BINARY(8) NULL,
[Nextdatetime] BINARY(8) NULL,
[Time_Stamp] TIMESTAMP
)

GO


增量数据

/*
功能说明: 更新日志表,获取最大值
*/

UPDATE Fact_ETL_Table
SET NextDateTime = (SELECT Max(stamp)
FROM Fact_Sale)
WHERE Name = 'Fact_Sale'


/*
功能说明: 获取增量数据
*/
SELECT Fact_Sale.SaleCarId,
Fact_Sale.SaleName,
Fact_Sale.CheckOutDate,
Fact_Sale.SaleType,
Fact_Sale.stamp
FROM Fact_ETL_Table,
Fact_Sale
WHERE Stamp > prevdatetime
AND stamp <= nextdatetime
AND Name = 'Fact_Sale'

0

齐天大圣 2016-02-11 回答

梁老师,你这个需要在原表中加入stamp列,这个列,一般的公司是不允许添加的.
另外,改变了原来的时间戳的,是不是要已经导出的表中,把原来记录删除才可以?
 

要回复问题请先登录注册