2017-08-21 63 views
2

专栏中,我需要你的帮助,在这个问题上,了Talend不能解析为时间戳

我从表中了Talend工作,这加载数据到另一个简单的TMAP。

我把它叫做一个神秘的错误,因为它happended只为特定日期时间

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

thnks,这是部分代码w HICH含有产生

    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; 
         } 
        } 
+0

好的,这是第一步。现在,导出模式如何? – tobi6

+0

导出架构是完全相同的架构源 –

+0

然后,我想这个错误来自其中一个tWarns想告诉你出了什么问题。 – tobi6

回答

0

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

0

错误既然你在

  • 源数据的样子,如没有提供进一步的信息它是源中的日期字段还是字符串字段?

  • 分析为什么会发生,这似乎是连接到源数据是一个字符串

  • 解析图案看起来像

,我要在这里承担了一下。

1st:我假设你在源代码中提供了一个字符串。既然是这样,那么您需要确保列中的日期始终以相同的方式格式化。另外,您需要向我们显示解析的时间戳格式。

2nd:你说你需要改变日期的值才能工作。这在我看来是一个解析问题,因此,例如,您偶然切换了月份和日期字段,例如, yyyy-dd-mm HH:mm:ss或类似的东西。再一次,这取决于你的解析字符串。

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

+0

嗨,字段是日期时间,模式是“yyyy-MM-dd”说,它适用于数千行,除了这个datetime 2009-06-01 00:00:00和其他一些 –

+0

那么,如果该字段已经是日期字段,那么该模式并不重要。我建议阅读博客文章。哪些人不工作?工作是怎样的?输入和输出组件的外观如何? – tobi6

+0

作业包含一个mysqlinput - > tmap - > mysqloutput,简单的工作,并加入一些查找 –