Pentaho与Oracle数据屏蔽 - 时间戳问题

时间:2017-03-14 14:23:25

标签: oracle datetime pentaho

我正在使用Pentaho来数据掩盖oracle DB上的一些信息

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

我有表,其中时间戳是更新步骤中主键的一部分。即使我没有以任何方式屏蔽或更新此字段,我收到错误ORA-01843:执行更新时不是有效月份。

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

给出时间戳

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

但在DB中格式为

30-JAN-15 09.21.38.109145000 AM(甲骨文 - 具有当地时区的TIMESTAMP(6))

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

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

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

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

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

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

不确定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文档。