前言
數(shù)據(jù)庫里面,部分?jǐn)?shù)據(jù)表和數(shù)據(jù)是latin1的,部分?jǐn)?shù)據(jù)表和數(shù)據(jù)是UTF8,還有部分表,表結(jié)構(gòu)是utf8而數(shù)據(jù)是latin1。
這種奇葩情況,工作了十幾年的我,還是第一次碰到。下面說一下,怎么樣字符集統(tǒng)一成utf8
1,建一個(gè)空數(shù)據(jù)庫
2,把表結(jié)構(gòu)和數(shù)據(jù)是utf8的表導(dǎo)出,然后直接導(dǎo)入到新的數(shù)據(jù)庫中
3,數(shù)據(jù)表和數(shù)據(jù)都是latin1的表,先導(dǎo)出表結(jié)構(gòu)和數(shù)據(jù),加上--default-character-set=latin1,將導(dǎo)出文件中,latin1改為utf8,在導(dǎo)入到新的數(shù)據(jù)庫中。
4,表結(jié)構(gòu)是utf8,表數(shù)據(jù)是latin1的,有二種方法:
4.1,先導(dǎo)出表結(jié)構(gòu),導(dǎo)入到新的數(shù)據(jù)庫中。導(dǎo)出數(shù)據(jù),加上--default-character-set=utf8,因?yàn)楸斫Y(jié)構(gòu)是utf8,表數(shù)據(jù)是latin1,入庫時(shí)已亂碼。在將數(shù)據(jù)導(dǎo)入到新庫中。這種方案有缺點(diǎn),--default-character-set=utf8,導(dǎo)出的數(shù)據(jù)可能會有丟失,導(dǎo)出的數(shù)據(jù),在導(dǎo)入時(shí)可能會報(bào)錯(cuò)。
4.2,可以通過binary字符集做中轉(zhuǎn),推薦這種方法
UPDATE user SET user_name = CONVERT(CONVERT(CONVERT(user_name USING latin1) USING binary) USING UTF8);
這種方法,省去了導(dǎo)出導(dǎo)入的麻煩,速度比較快,11w條數(shù)據(jù),差不多5-6秒
數(shù)據(jù)庫設(shè)計(jì)這塊非常重要,在設(shè)計(jì)數(shù)據(jù)庫時(shí)一定要考慮清楚。地基不牢,大廈遲早會倒的。
您可能感興趣的文章:- MySQL查看與修改字符集的方法實(shí)例教程
- 如何修改MySQL字符集
- mysql數(shù)據(jù)庫中字符集亂碼問題原因及解決
- MySQL字符集utf8修改為utf8mb4的方法步驟
- MySQL字符集亂碼及解決方案分享
- 詳解JDBC對Mysql utf8mb4字符集的處理
- MySQL中因字段字符集不同導(dǎo)致索引不能命中的解決方法
- MAC下修改mysql默認(rèn)字符集為utf8的方法
- Docker下mysql設(shè)置字符集的方法
- 關(guān)于mysql查詢字符集不匹配問題的解決方法
- 詳解mysql中的字符集和校驗(yàn)規(guī)則