我有一个Oracle GoldenGate设置,其中以Oracle数据库为源,但有一个非Oracle目标。我的源数据库位于时区A。是否可以配置我的提取/复制,以便目标中的所有数据都位于UTC或某些可自定义的时区B中?
为了更清楚一点,假设我在EST中有一个数据库,其中有一个日期列,其值为2018-11-26 17:01:49
,我希望将数据转换为UTC,并且复制的值为2018-11-26 22:01:49
。是否有一种干净的(或任何)方法来实现这一目标?
答案 0 :(得分:0)
此转换仅适用于 REPLICAT 。它会进行时间的完整计算,并从名为dt
的源日期列到名为dt5
的目标列,该列将转换为日期+ 5小时(您可以将其调整为任何时区您必须转换数据)。假设您的源表是t4
,目标表是t4_copy
(对于SCHEMA scratch
)
MAP scratch.t4, TARGET scratch.t4_copy,
COLMAP ( USEDEFAULTS,
dt5 = @DATE ('YYYY-MM-DD HH:MI:SS', 'JTS',
@COMPUTE (@DATE ('JTS', 'YYYY-MM-DD HH:MI:SS', dt) + 18000000000 ) )
);
JTS
(Juilan时间戳记)产生可以在数字表达式中使用的数字。单位是微秒(这就是+18000000000
的原因)