【轉】kettle7.1資源庫無法打開,找不到connect按鈕的問題處理


轉自:https://www.aboutyun.com/home.php?mod=space&uid=71645&do=blog&id=3535 

kettle是一個比較好用的ETL開源工具,之前一直使用的是6.1版本,最近項目組有小伙伴第一次使用,直接下載了7.1版本。在使用中關於資源庫的使用和6.1版本略有不同,如何創建資源庫這里就不贅述了,大家可以參考網上的方法。但是小伙伴反饋資源庫每次在kettle關閉重新打開后就不能用了,甚至連右上角那個connect按鈕也不見了。

聰明的小伙伴已經找到原因了,是由於資源庫中包含中文,但是在repositories.xml(系統盤用戶目錄.kettle目錄下)中中文顯示的是亂碼,解決辦法是刪除這個文件里的內容,把目錄名全部用英文,然后重新創建資源庫,且資源庫信息中不包含任何中文。這是一種方法,我同意,但這樣改動太大,且涉及到svn以及生產庫,且無法支持中文這個問題就浮出來了,聯想到我之前一直用的6.1版本就沒有這個中文編碼問題,我覺得這是7.1中的一個小bug。

第一步用notepad++打開兩個不同版本創建的資源庫配置文件repositories.xml(默認在C:\Users\Administrator\.kettle),右下角文件編碼里顯示6.1版本創建的是utf-8,而7.1版本創建的是GB2312。看來確實是兩個版本創建時所用的默認編碼格式不同。為了驗證我的想法,7.1版本的配置文件用記事本打開,然后用utf-8編碼另存后,重新打開kettle7.1,資源庫能順利打開。
在看7.1的配置文件,第一行是<?xml version="1.0" encoding="UTF-8"?>,很明顯,配置文件提示的編碼格式是UTF-8,這和實際的編碼格式不一致。所以我大膽猜測,kettle在讀取配置文件時是根據這個提示使用編碼格式的,所以必須在保存時按照utf-8保存,才能正確讀取中文。


第二步,按照這個思路,查找如何調整kettle使用的編碼,終於找到原來只要在啟動時加入編碼參數就可以指定UTF-8格式的編碼,具體操作如下:
1.用編輯器打開Spoon.bat
2.在命令行if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" "-Xmx2048m" "-XX:MaxPermSize=256m"后面加上"-Dfile.encoding=UTF-8"
3.關閉重新打開kettle(這里如果原來的repositories.xml沒有另存為UTF-8格式的,則需要刪除此文件里的內容或另存為UTF-8格式
4.創建一個帶中文路徑的資源庫測試
5.用notepad++打開配置文件,查看編碼格式,正常顯示為UTF-8,與提示一致,不保存,直接關閉
6.關閉kettle並重新打開,資源庫能正常使用
問題徹底解決
新的解決方法更簡單,對用戶來說幾乎透明,只需把修改后的spoon.bat替換原來的文件,並提示用戶把原來的配置文件另存為utf-8格式即可

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM