Talend无法将列解析为时间戳

时间:2017-08-21 08:36:09

标签: mysql mariadb talend

我在这个问题上需要你的帮助,

我有一个talend作业,它使用简单的tmap将数据从表加载到另一个表。

我把它称为一个神秘的错误,因为它仅仅针对特定的日期时间

java.sql.SQLException: Could not parse column as timestamp, was: "2009-06-01 00:00:00"    

包含此行的行前面的数千行不会生成错误

当我将此日期 2009-06-01 00:00:00 修改为另一个或仅更改日期部分或月份甚至小时时,它会无错误。< /强>

数据源是 mariadb ,目的地是 Mysql 数据库

向你求助

enter image description here enter image description here

enter image description here

这是包含生成错误的代码的一部分

                    if (colQtyInRs_tMysqlInput_5 < 6) {
                        row5.created_at = null;
                    } else {

                        if (rs_tMysqlInput_5.getString(6) != null) {
                            String dateString_tMysqlInput_5 = rs_tMysqlInput_5
                                    .getString(6);
                            if (!("0000-00-00")
                                    .equals(dateString_tMysqlInput_5)
                                    && !("0000-00-00 00:00:00")
                                            .equals(dateString_tMysqlInput_5)) {
                                row5.created_at = rs_tMysqlInput_5
                                        .getTimestamp(6);
                            } else {
                                row5.created_at = (java.util.Date) year0_tMysqlInput_5
                                        .clone();
                            }
                        } else {
                            row5.created_at = null;
                        }
                    }

2 个答案:

答案 0 :(得分:0)

由于您未在

中提供进一步的信息
  • 源数据的外观如何,例如它是源中的日期字段还是字符串字段?

  • 为什么解析会发生,这似乎与作为字符串的源数据有关

  • 解析模式的外观如何

我将在这里假设一下。

第一:我假设你在源代码中提供了一个字符串。由于是这种情况,您需要确保列中的日期始终采用相同的格式。此外,您需要向我们展示解析的时间戳格式。

第二次:您说您需要更改日期值以使其正常工作。在我看来这是一个解析问题,所以例如你偶然切换了月和日字段,例如yyyy-dd-mm HH:mm:ss或类似的东西。同样,这取决于您的解析字符串。

由于这个I created a blog post for date handling in Talend经常会有一些混淆,你也可以参考。

答案 1 :(得分:0)

此错误是由于Timezone,在尝试了许多解决方案后,我考虑更改时区,因为我的笔记本电脑是UTC,数据库时区是UTC + 01,因此Talend在本地环境中生成此错误。 希望它会帮助别人