Kettle 連接資料庫問題分析及解決
一、問題一:測驗連接資料庫出問題
1 將如下驅動包匯入data-integration目錄下的Lib目錄
mysql-connector-java-5.1.40.jar
mysql-connector-java-8.0.17.jar
mysql-connector-java-5.1.40.jar提取碼dny8
mysql-connector-java-8.0.17.jar提取碼qqxh
2 重新測驗連接資料庫
如果連接成功,則結束,如果連接成功但是再進行資料轉換時出錯,或者其他問題往下看,(基本上驅動有了都會成功)
二、 問題二:測驗連接成功,但是在進行轉換運行時出錯
1 這種情況基本上都是字符集問題
可能在你測驗成功后,在進行在Kettle上執行SQL陳述句建立表時出錯,是字符集錯誤沒跑了,
2 修改字符集
將mysql下的字符集編碼格式改為utf8mb4
utf-8編碼可能2個位元組、3個位元組、4個位元組的字符,但是MySQL的utf8編碼只支持3位元組的資料,而移動端的表情資料是4個位元組的字符,如果直接往采用utf-8編碼的資料庫中插入表情資料,程式中將報SQL例外,
3 修改程序如下
修改mysql字符集編碼為utf8mb4(Linux系統)
1 查看自己的資料庫版本
SHOW VARIABLES WHERE Variable_name LIKE ‘character_set_%’ OR Variable_name LIKE ‘collation%’;
如下:

2 進入自己的mysql安裝路徑修改my.cnf組態檔
我的安裝路徑是:/etc/mysql:在組態檔中添加如下內容:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect=‘SET NAMES utf8mb4’
3 重新啟動資料庫
再次查看資料庫編碼格式:

可以看到,已經成功修改為utf8mb4格式
4 將資料庫和已經建好的表也轉換成utf8mb4
ALTER DATABASE (輸入你自己的資料庫名) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ALTER TABLE (輸入你自己的表名) CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
5 將kettle中資料庫連接中的高級添加下面一句話
set names utf8;
6 將kettle中資料庫連接中的選項下的命令引數添加下面一句話
characterEncoding utf8;
三、中文亂碼問題
對于將EXCEL表中中文匯入資料庫時,中文出現亂碼這種問題,我們知道肯定是字符集問題,但是我在最初進行更改字符集時,總是出現錯誤還是亂碼,不過,最終,在一步步分析后,我終于找到了問題所在,主要問題就是我在之前的字符集修改時,總是忽略了對mysql資料庫字符集的修改,而導致出現了各種各樣的問題,
下面,我在這里總結了如果出現中文亂碼錯誤(其他錯誤也可以嘗試修改),則修改字符集的地方有以下幾處:
1 kettle中資料庫連接上的高級里設定:set names utf8;
2 kettle中資料庫連接上的選項里設定命令引數:characterEncoding utf8
3 修改mysql字符集為utf8mb4(組態檔中修改,一定要找準組態檔)具體做法見上面,

通過上面幾步,基本上可以解決Kettle連接資料庫和中文亂碼問題,
如果最侄訓不成功,可以私信我幫你解決,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/301232.html
標籤:其他

