首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 中文亂碼解決方案與數據導出 SQL/Excel 完整指南

     編輯:MySQL 資料庫相關知識

在使用 Heritrix 開發爬蟲專案時,MySQL 的中文編碼問題與數據遷移需求讓我踩了不少坑。這篇文章記錄了從環境配置、mysqldump 版本衝突,到透過命令列匯出 Excel 與 SQL 腳本的完整實戰過程,希望能幫助遇到相同問題的開發者快速定位解決方案。

一、 環境與問題背景

作業環境:Mac OS X 10.8.3、MySQL Community Server 5.6.10、MySQL Workbench 5.2.47。

需求是將本機資料庫遷移至另一台伺服器。最初嘗試使用 Workbench 內建的 Import/Export 功能(底層呼叫 mysqldump),卻遭遇版本不一致錯誤,導致無法正常匯出。

Workbench 匯出錯誤截圖1
Workbench 匯出錯誤截圖2
Workbench 匯出錯誤截圖3
Workbench 匯出錯誤截圖4

二、 解決方案:指定正確的 mysqldump 路徑

經排查,Workbench 預設呼叫的 mysqldump 版本與伺服器不匹配。解決方法是手動指定 MySQL 安裝目錄下的 mysqldump 可執行檔:

/usr/local/mysql/bin/mysqldump

如此即可正常將資料匯出為包含 INSERT 語句的 SQL 檔案。

三、 需求延伸:匯出為 Excel 格式

由於業務需求要求匯出 Excel,需透過 MySQL 命令列客戶端,使用 SELECT ... INTO OUTFILE 語句直接輸出 CSV/Excel 相容檔案。下文分別說明兩種匯出方式的操作步驟。

1. 透過終端機操作匯出 Excel

步驟 1:進入 MySQL bin 目錄

cd /usr/local/mysql/bin/

步驟 2:登入 MySQL 控制台

語法:./mysql -h主機IP -u用戶名 -p密碼
範例:./mysql -hlocalhost -uroot -p123456
注意: 必須加上 ./ 前綴指定當前目錄下的執行檔。

MySQL 控制台登入成功截圖

步驟 3:選擇目標資料庫

SHOW DATABASES;
USE your_database_name;

每條指令必須以英文分號 ; 結尾。

選擇資料庫截圖

步驟 4:執行匯出 SQL 語句(含編碼轉換)

我的資料庫編碼為 utf8,而 Excel 預設開啟編碼常為 gb2312(中文環境),直接匯出會導致中文亂碼。解決方法是在查詢中使用 CONVERT() 函式轉換字符集:

SELECT 
    id,
    CONVERT(name USING gbk) AS name,
    CONVERT(description USING gbk) AS description
FROM your_table
INTO OUTFILE '/tmp/export_data.csv'
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';
匯出 SQL 語句範例截圖

權限提示: 嘗試匯出到桌面(/Users/username/Desktop/)時提示權限不足,這是因為 MySQL 服務進程(通常以 mysql 用戶運行)無權寫入該目錄。使用相對路徑 ./export_data.csv 時,檔案實際會寫入 /usr/local/mysql/data/ 目錄下,該目錄通常擁有寫入權限。打開檔案確認,中文顯示正常,亂碼問題解決。

2. 匯出為 SQL Insert 語句

使用指定路徑的 mysqldump 即可:

/usr/local/mysql/bin/mysqldump -h localhost -u root -p your_database > /path/to/backup.sql

此方式產出標準 SQL 腳本,包含建表語句與資料插入語句,適合跨版本遷移或備份還原。

四、 總結與最佳實踐

  • 版本一致性: 使用圖形工具匯出時,務必確認工具內部呼叫的 mysqldump 版本與目標 MySQL 服務版本匹配,或手動指定路徑。
  • 編碼轉換: 匯出給 Excel 開啟的檔案時,若資料庫為 UTF-8,建議在 SQL 中用 CONVERT(col USING gbk) 或 gb2312 預轉編碼,避免中文亂碼。
  • 檔案權限: INTO OUTFILE 的目標路徑必須為 MySQL 服務進程可寫入的目錄(通常為 datadir 或 tmpdir 指定的路徑),不可寫入用戶家目錄。
  • 分隔符設定: 匯出 CSV 給 Excel 時,建議使用 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' 確保 Windows 下換行正常。

掌握這些技巧,無論是資料遷移、備份還是報表匯出,都能遊刃有餘地處理 MySQL 中文編碼與匯出格式問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved