我正在尝试创建一个Talend作业,该作业将执行以下操作:
这三个很简单,并且是通过对tOracleOutput组件中的数据执行“插入或更新”操作实现的。
但是,我的问题是我在Oracle表中有2个额外的列:
如果发生更新,我需要在DM_UPDATE_DATE列中设置当前日期时间,但仅限于更新行时。
如果发生插入,我需要将DM_INSERT_DATE和DM_UPDATE_DATE设置为当前日期时间。
我无法实现这种行为 - 是否有开箱即用的Talend解决方案?
我查看了tMap组件,特别是这个SO Answer似乎有来自tMap组件的输出来区分更新和插入,但对于ETL作业中相当标准的东西来说,这似乎过于复杂。
答案 0 :(得分:3)
保罗,
以下是解决方案:
由于在更新和插入时都设置了mod日期,因此请在tmap中设置它们。请参阅代码,但请记住这会返回一个字符串,因此请使用string作为tmap中的数据类型,并将varchar作为oracleoutput组件中的数据类型。
TalendDate.getDate("CCYY-MM-DD hh:mm:ss")
对于插入日期,请在表上使用Oracle默认值,并且不要通过Talend发送值。