Kettle資料抽取(轉換)mysql出現亂碼問題解決方法

terryisme發表於2014-03-07


在kettle中進行資料抽取,如果抽取的源資料庫和目標資料庫不是同一個資料庫,可能會導致轉換後的中文出現亂碼情況,原因是由於在中文環境下有的資料庫客戶端預設編碼格式是UTF-8,而另外的資料庫編碼格式是GBK,這樣就導致資料亂碼的情況出現。

針對這個問題,只需要在Database connection中做一個配置即可,具體步驟如下:

1.點選如下圖Transform或jobs的DB連線。


2.在彈出的Database Connection中選擇Options選項,在Parameters下填入引數“characterEncoding”,其value為“gbk”,如下圖。

這樣,就能解決kettle抽取資料過程中的中文亂碼問題。

附:

針對mysql資料庫,如果在pentaho平臺上執行kettle的資料抽取,並且在作出上述修改後仍然出現亂碼的話,可以考慮以下幾個方面:

1.    pentaho的META-INF/context.xml中資料來源的url後面新增“useUnicode=true&characterEncoding=utf8&characterSetResults=utf8”完整的配置如下

或在pentaho的Database Connection的options中配置以上引數

[c-sharp] view plaincopyprint?

1. 

2.  factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxActive="20" maxIdle="5"

3.  maxWait="10000" username="root" password="root"

4.  driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/bi?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8"

5.  validationQuery="select 1" />

2.檢查mysql資料庫server端字符集是否是utf-8,如果不是的話,修改為utf-8。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/93029/viewspace-1103099/,如需轉載,請註明出處,否則將追究法律責任。

相關文章