1

我有一个 Oracle GoldenGate 设置,其中 Oracle 数据库作为我的源和一个非 Oracle 目标。我的源数据库位于时区 A。有没有办法配置我的提取/复制,以便我的目标中的所有数据都在 UTC 或某些可自定义的时区 B 中?

为了更清楚,假设我在 EST 中有一个数据库,其中我有一个日期列,2018-11-26 17:01:49我希望将数据转换为 UTC,复制的值将是2018-11-26 22:01:49. 有没有一种干净的(或任何)方法来实现这一目标?

4

1 回答 1

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 timestamp) 产生可以在数值表达式中使用的数字。单位是微秒(这就是为什么+18000000000

于 2018-12-13T16:59:51.953 回答