1. 增量抽取的时候,我们的时间戳字段是放在参数文件里面的,直接读取参数文件:
首先,我们需要在mapping里面新建2个variable
参数文件中的变量(注意:这个变量的值我是没有加引号的):
当然在workflow里面也是要加参数文件具体路径的,上面已经详细介绍过,这里不再赘述。
你可以有疑问了,为什么mapping中的变量要是string类型?参数文件中的变量到底什么时候要加引号?我的时间变量是写在参数文件里面那我etl程序执行完怎么去修改它的值?
先来解答第一个问题:
时间戳类型要是mapping里面使用string类型,本人尝试过,如果将start_time,end_time设置成date类型,并在参数文件赋值,session运行时生成的sql就是lastUpdateDate>2013-08-1312:04:22 andlastUpdateDate<2014-08-03 16:04:22,这样满足不了日期类型直接用的问题,还是需要进行转换的,所以一般情况我们都是将其设置成string类型。
第二个问题,如果我的参数文件中没有给start_time,end_time的值加单引号,那在sql query里面请一定加上单引号;如果我的参数文件里面添加了单引号那在sql query里面无需再添加单引号,2种做法都可以。任选。
第三个问题,实际项目中,每个workflow都有自己的参数文件,特别是针对时间戳这样的值,如果你使用的时间戳是sessionstarttime,那么这个值是Informatica自身提供的,你不需要使用参数文件,如果你使用了参数文件里面的时间戳,那么你需要使用Unix shell中的sed命令对时间戳进行修改。