收到批处理错误 运行 更新 talend 到 PostgreSQL 数据库

receiving batch error running an update on talend into PostgreSQL database

我有一个 talend 解决方案,里面有一个 tMap --> tPostgreSQLOutput.

架构中有一个integer(关键字段)和一个格式为"dd-MM-yyyy HH:mm:ss"的日期(时间戳)。目的是用当前 time/date(时间戳)更新日期字段。

在 tMap 中使用此 talend 函数调用设置日期:

TalendDate.parseDate("yyyy-MM-dd HH:mm:ss", TalendDate.getDate("yyyy-MM-dd HH:mm:ss")) 

我确认了日期(时间戳)格式,确认了PostgreSQL数据库中的时间戳数据类型。但是,我在运行时收到此错误:

Batch entry 0 UPDATE "bitcoin_options" SET "last_notified" = 2017-04-08 12:02:40.000000 -05:00:00 WHERE "id" = 3 was aborted.  Call getNextException to see the cause.

我接受了错误的查询并手动 运行 将其输入到 PostgreSQL 中。我收到了这样的回复:

ERROR:  syntax error at or near "11"
LINE 1: ...bitcoin_options" SET "last_notified" = 2017-04-08 11:53:11.0...
                                                             ^

我再次检查了格式、数据类型,并将它们与其他表及其 UPSERTS 进行了比较。相同的格式。相同的数据类型。

此外,我尝试在日期和时间之间添加第二个 space,但没有用。

更新 1

我将 tMap 输出更新为:

TalendDate.getCurrentDate();

并得到同样的错误。 谢谢

更新 2

这是我的 Talend 布局:

请注意您的时间戳格式不正确: UPDATE "bitcoin_options" SET "last_notified" = '2017-04-08 12:02:40.000000 -05:00:00' WHERE "id" = 3

它缺少围绕时间戳的单引号。如果您添加了这些,您就可以开始了。

我明白了。经过多次试验和错误。 tPostgresSQLCommit x3 是多余的。当我删除前两个并只放置一个时,它给了我正确的输出。

经验教训:您只需要 1 次提交。