【问题标题】:Bad value for type timestamp postgres in talendtalend 中类型时间戳 postgres 的错误值
【发布时间】:2015-10-16 05:31:26
【问题描述】:

我将 Greenplum 输入、TMAP 和 Greenplum 输出作为我的工作设计。 我有一个 Postgres 输入(Greenplum 输入),其中我使用这个 postgres 查询:

to_char(to_date(EI.LAST_UPDATE_DATE,'yyyy-mm-dd'),'DD-MON-YYYY')

我将此 Postgres 输入(Greenplum 输入)链接到 Tmap,其中我将 tmap 输入:LAST_UPDATE_DATE 作为日期,将模式作为"yyyy-MM-dd HH:mm:ss"。在我的 tmap 输出中,我映射了具有相似列的相似目标输出 Greenplum,并将日期和模式设置为相同,即日期和模式为 "yyyy-MM-dd HH:mm:ss"。我将此 tmap 链接到 greenplum 输出。

我收到 GreenplumInput 的错误:

类型时间戳 2008 年 11 月 11 日的错误值。

如何对这个错误进行排序?我是否将日期输入作为字符串,然后将其转换为日期?我在 tmap 本身中尝试了它,将 tmap 输出作为 talendparsedate 到该列,但它显示无法解析的日期。

【问题讨论】:

  • 您对 greenplum 端的 last_update_date 列的期望是什么 - 它是一个 varchar 列还是您想将其保持为日期?如果它仍然是 greenplum 方面的预期日期,则不需要在 tpostgresinput 组件中执行 to_char() 。简单地在您的选择中选择日期作为 ei.last_update_date 并在模式中使用日期作为列数据类型和格式作为任何可用的说 yyyy-MM-dd HH:mm:ss ... 类似地在您的 tmp 中,tgreenplum 输出保持相同架构列 last_update_date 的格式和数据类型...您应该对此没有任何问题。

标签: postgresql datetime timestamp etl talend


【解决方案1】:

错误消息将此作为时间戳输入提及

11-NOV-2008

哪些模具不符合您的模式:

to_date(EI.LAST_UPDATE_DATE,'yyyy-mm-dd')

要么将输入更改为:

2008-11-11

或者你的函数中的模式:

to_date(EI.LAST_UPDATE_DATE,'DD-MON-YYYY')

【讨论】:

  • 我将模式更改为 "to_date(EI.LAST_UPDATE_DATE,'DD-MON-YYYY')" 但 Talend 无法将输入视为 DD-MON-YYYY,因为 MON 对 Talend 不可读(TMAP )。另外,我尝试将模式更改为 "to_date(EI.LAST_UPDATE_DATE,'yyyy-mm-dd')" ,但作业正在循环运行。
猜你喜欢
  • 2012-12-24
  • 1970-01-01
  • 2015-11-29
  • 2012-08-29
  • 2017-06-26
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 1970-01-01
相关资源
最近更新 更多