1. 程式人生 > 資料庫 >mysql如何在已有資料庫上統一字符集

mysql如何在已有資料庫上統一字符集

前言

資料庫裡面,部分資料表和資料是latin1的,部分資料表和資料是UTF8,還有部分表,表結構是utf8而資料是latin1。

這種奇葩情況,工作了十幾年的我,還是第一次碰到。下面說一下,怎麼樣字符集統一成utf8

1,建一個空資料庫

2,把表結構和資料是utf8的表匯出,然後直接匯入到新的資料庫中

3,資料表和資料都是latin1的表,先匯出表結構和資料,加上--default-character-set=latin1,將匯出檔案中,latin1改為utf8,在匯入到新的資料庫中。

4,表結構是utf8,表資料是latin1的,有二種方法:

4.1,先匯出表結構,匯入到新的資料庫中。匯出資料,加上--default-character-set=utf8,因為表結構是utf8,表資料是latin1,入庫時已亂碼。在將資料匯入到新庫中。這種方案有缺點,--default-character-set=utf8,匯出的資料可能會有丟失,匯出的資料,在匯入時可能會報錯。

4.2,可以通過binary字符集做中轉,推薦這種方法

UPDATE user SET user_name = CONVERT(CONVERT(CONVERT(user_name USING latin1) USING binary) USING UTF8); 

這種方法,省去了匯出匯入的麻煩,速度比較快,11w條資料,差不多5-6秒

資料庫設計這塊非常重要,在設計資料庫時一定要考慮清楚。地基不牢,大廈遲早會倒的。