解决SSIS提取最大时间并增量提取数据解决方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

解决SSIS提取最⼤时间并增量提取数据解决⽅法
我们在SSIS中设计ETL操作的时候,对于业务数据的定量或者全量加载都会遇到同样的⼀个问题,那就是增量,到底是如何去做,我想每个⼈的做法也有所不同有⼈使⽤时间戳、也有使⽤⽇志,但是对于不能⼲预业务系统的SSIS⼈员来说,有可能业务系统没有设计这样的字段供我们使⽤,我们就只能根据业务系统⾥⾯能使⽤的字段来做⽂章了,接下来我要分享我针对业务系统是如何做的。

在此我也提出⼀个疑问就是,数据流任务中的OLE DB源控件中使⽤ SQL命令并使⽤?代替参数,如果?为DateTime类型将对数据表的索引⽆效,也就是说这样来做SQL语句并不能使⽤到SQL索引,有遇到过的朋友可以来⼀起交流。

⼀、处理流程
⼆、具体步骤
1. 创建变量
2. 获取最⼤时间
在控制流中加⼊⼀个“执⾏SQL任务”并设置 SQLStatement属性内容为:
Select
=CONVERT(varchar(30),ISNULL(MAX(CreateTime),'1900-01-01'),21)
From YourTableName
接下来点击“参数映射”配置如下:
这样就能获取到要增量的数据表的最⼤时间了。

3. ⽣成SQL语句
这个步骤如果在本⽂前部分提到的问题能解决的话就能忽略本步骤。

在控制流中加⼊⼀个“脚本任务”并设置LoadSQL为可读写参数,LastCreateTime参数为可读参数。

接下来点击“脚本编辑”编写我们的脚本:
public void Main()
{
string strCreateSql = "Select * From YourTable Where CreateTime > '" + Dts.Variables["LastCreateDate"].Value.ToString() + "'";
Dts.Variables["LoadSQL"].Value = strCreateSql;
Dts.TaskResult = (int)ScriptResults.Success;
}
这样就可以了。

4. 数据加载
这⾥就是简单的设置,拖⼊⼀个“数据流任务”,并加⼊OLE DB源双击这个源:
这样就可以解决增量和索引问题了。

本⽂章结束。

如果您有更好的解决办法,希望能和⼤伙⼀起分享。

相关文档
最新文档