最近在做項目的工程中,由於系統中需要提供Database Backup的功能,經過網上一番搜尋,覺得採用簡單的mysqldump
Linux下通過mysqldump備份MySQL資料庫成sql檔案
Linux中使用mysqldump對MySQL資料庫進行定時備份
(1)java代碼
String backupSQL = "cmd /c mysqldump -urootdd --extended-insert=false -hlocalhost fts> "
+ DB_BACKUPFILE_PATH + " ";
Runtime runtime = Runtime.getRuntime();
System.out.println(runtime.exec(backupSQL));
通過執行上面的程式碼片段的出來的檔案中,中文部分都已亂碼出現,起初懷疑是資料庫的編碼有關,於是通過以下方式來查詢資料庫的編碼
(2) >show variables like 'character%';
經過以上步驟可以確定資料庫的編碼是沒有問題的,經過再次網上搜尋 得到如下結論
"如果MySQL伺服器上的字元集是 latin1 或者其他的的,mysqldump 出來的中文都是亂碼!一個簡單的辦法是加上預設字元集選項,如:
mysqldump [-h 127.0.0.1 -P 3307 ] -u username --default-character-set=gbk -p databasename > dumpfile.txt,
--default-character-set 知道資料內容是中文時可以指定為 gbk,這樣即使資料庫本身設定字元集為 latin1 出來的檔案中文也能正常!", 最後將代碼改成如下形式
(3)最終java 代碼
String backupSQL = "cmd /c mysqldump -urootdd --default-character-set=gbk --opt --extended-insert=false -hlocalhost fts> "
+ DB_BACKUPFILE_PATH + " ";
Runtime runtime = Runtime.getRuntime();
System.out.println(runtime.exec(backupSQL));
經過以上修改,終於搞定,匯出的檔案中的中文時正常顯示的