【问题标题】:Pentaho with Oracle data masking - Timestamp issue带有 Oracle 数据屏蔽的 Pentaho - 时间戳问题
【发布时间】:2017-03-14 14:23:24
【问题描述】:

我正在使用 Pentaho 对 oracle DB 上的一些信息进行数据屏蔽

我有几种形式的转换: SELECT -> 数据掩码 -> 根据主键更新行

我有一些表,其中时间戳是更新步骤中主键的一部分。即使我没有以任何方式屏蔽或更新此字段,我也会收到错误 ORA-01843: not a valid month 在执行更新时。

我相信这是因为当 Pentaho 从步骤 1 中获取时间戳时,它实际上并没有将其保留为时间戳,直到我尝试更新并因此进行主键检查。输出到 excel,我看到 pentaho 以格式给出时间戳

2014-07-30 15:44:31.869033 欧洲/伦敦 (Pentaho)

但在 DB 中,格式是

30-JAN-15 09.21.38.109145000 AM(Oracle - 带有本地时区的时间戳 (6))

我尝试在更新步骤之前将 pentaho 字段转换为时间戳(格式:yyyy-MM-dd HH:mm:ss.SSSSSS),但如果我尝试使用毫秒,则会收到错误。

2017/03/14 13:19:25 - 选择 values.0 - AUDIT_CREATE_TS 时间戳:无法将字符串 [2015-01-30 09:21:38.109145 Europe/London] 转换为时间戳,期望格式 [yyyy -mm-dd hh:mm:ss.ffffff]

2017/03/14 13:19:25 - 选择值.0 - 时间戳格式必须为 yyyy-mm-dd hh:mm:ss[.fffffffff]

如果我将我的格式替换为 Pentaho 建议的格式,我会得到“非法字符 'f'”,然后我就会陷入循环。

忽略毫秒似乎成功了,但不会给我任何匹配,因为它不够精确并且不会从 db 返回任何结果..

任何帮助将不胜感激!

【问题讨论】:

    标签: oracle datetime pentaho


    【解决方案1】:

    不确定 Pentaho,但如果您正在寻找来自此字符串的转换:

    '2015-01-30 09:21:38.109145 Europe/London'
    

    到 Oracle 中带有时区的时间戳,它将是:

    select to_timestamp_tz('2015-01-30 09:21:38.109145 Europe/London', 'YYYY-MM-DD HH24:MI:SS.FF6 TZR') from dual;
    

    有关更多信息,请参阅 Oracle Datetime Format Models 文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      相关资源
      最近更新 更多