Mysqldump

在不破壞編碼的情況下將數據從 mysql 4.0 移動到 5.6

  • December 19, 2015

我有一個舊的 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

這解決了我遇到的問題。

引用自:https://dba.stackexchange.com/questions/124135