解決使用logstash中jdbc導入mysql中的數據到elasticsearch中tinyint類型被轉成布爾型的問題的方法

問題場景

在最近這幾天用logstash將mysql中的數據導入的elasticsearch時,發現數據庫中的tinyint(1)這種類型的就會被轉成布爾型,這把我給氣的。在網上找了一圈,才找到問題的根源。

原因探索

原來是jdbc裏面將這種tinyint(1)處理成布爾型的了。tinyint(2)以上的就不會處理。

解決方案

網上有說在查詢結果中將這種字段乘以1然後作爲源數據使用,但是有的時候,我們是用*號全部查詢出來,爲了其中個別的字段去將全部字段都一一寫出來,實在是心累啊。所以最後查詢來查詢去,找到了java中對這種的處理辦法。就是在連接數據庫的時候,指定這種不處理。就是在連接字符串後面指定tinyInt1isBit=false

代碼如下:

jdbc_connection_string => "jdbc:mysql://localhost:3306/my_db?tinyInt1isBit=false"

這樣導入之後的tinytint完整保留字段類型。解決了我的困擾。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章