天天看點

MySQLl-更改生産線上MySQL資料字元集的方案

下面模拟将Latin1字元集的資料庫修改為GBK字元集的實際過程

1,導出表結構

<code>mysqldump -uroot -p </code><code>--default-character-set=latin1 -d dbname &gt;alltable.sql;</code>

<code>--default-character-set=gbk  表示以GBK字元集進行連接配接</code>

<code>-d 隻導出表結構</code>

2,編輯alltable.sql 将Latin1改成GBK

  可以sed批量替換

3,確定資料庫不再更新,導出所有資料

<code>mysqldump -uroot -p123456 </code><code>--quick --no-create-info --extended-insert </code>

<code>--default-character-set=latin1 dbname &gt;alldata.sql</code>

參數說明:

--quick:用于轉儲大的表,強制mysqldump從伺服器一次一行的檢索資料而不是檢索所有的行,并輸出前cache到記憶體中

--no-create-info:不建立create table 語句

--extended-insert: 使用包括幾個values清單的多行insert文法,這樣檔案更小,ID也小,導入資料時候非常快

--default-character-set=latin1:按照原有的字元集導出資料,這樣導出的檔案中,所有中文都是課件的不會儲存成亂碼

4,打開data.sql 将set names latin1 修改成set names gbk;

  加入配置檔案中已經全部配置好字元集,這一步可以不操作。推薦執行修改配置檔案

5,建立庫

<code>create</code> <code>database</code> <code>dbname </code><code>default</code> <code>character</code> <code>gbk;</code>

6,建立表,執行alltable.sql

<code> </code><code>mysql -uroot -p dbanme &lt;alltable.sql</code>

7,導入資料

<code>mysql -uroot -p dbanme &lt;alldata.sql</code>

總結:  latin1----&gt;gbk

1, 導出表結構,sed 批量修改字元集為gbk

2, 導出所有資料

3, 修改mysql伺服器和用戶端的編碼為gbk

4, 删除原有的庫,表以及資料

5,導入新的建庫以及建表的語句

6,導入mysql的所有資料

      本文轉自crazy_charles 51CTO部落格,原文連結:http://blog.51cto.com/douya/1787941,如需轉載請自行聯系原作者