mysql如何在已有資料庫上統一字符集
阿新 • • 發佈:2020-01-09
前言
資料庫裡面,部分資料表和資料是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秒
資料庫設計這塊非常重要,在設計資料庫時一定要考慮清楚。地基不牢,大廈遲早會倒的。