Mysqldump
在不破壞編碼的情況下將數據從 mysql 4.0 移動到 5.6
我有一個舊的 mysql 數據庫,我想移動到最新版本的 mysql 並針對 SELECT … WHERE … 語句進行優化。它將是一個僅限 SELECT 的數據庫。
原始數據庫使用 latin 1 編碼,但實際數據使用土耳其字元。它由桌面應用程序使用。可能應用程序將數據解釋為 latin 5 以正確顯示。
我可能會放棄原始程序並實現我自己的查詢使用者界面。
我的問題是,當我 mysqldump -> mysql import 時,某些字元會損壞。例如,
YAŞAR
變成YAÞAR
。我沒有在 mysql 轉儲和導入中添加任何編碼資訊。當我使用 phpmyadmin 時,我的行似乎使用 latin1_swedish_ci 排序規則和 latin1 編碼。我怎樣才能移動我的數據並且不搞亂編碼。
這是我的做法。首先,我啟動了舊的 mysqld 並發出了這個命令:
mysqldump -u root -p --tab=tmp --default-character-set=latin1 database tablename
然後,我啟動了新的 mysqld 並使用 phpmyadmin 創建了表結構。我選擇 latin5_turkish_ci 作為數據庫和表行的排序規則。
我還將生成的 tablename.txt 複製到新的 mysql 數據目錄。我像這樣導入了文件:
mysqlimport -u root -p --default-chracter-set=latin5 database tablename.txt
這解決了我遇到的問題。