2017-08-21 146 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,簡單的工作,並加入一些查找 –