作为资深的DBA措施员,在事变中是否会碰着更这样的环境呢?
原稀有据库的字符集因为前期筹划不敷,跟着营业的成长不能满意营业的需求。如原本营业体系用的是utf8字符集,后期有存储心情标记的需求,uft8字符集就不能满意此时的营业需求了。必要用utf8mb4字符集。
数据库迁徙,源和方针数据库的字符集纷歧致,必要在迁徙之前举办转换。
改换数据库字符集的时辰显着很认(jian)真(dan),老是会呈现各类百般的题目,导致改换之后数据库的数据呈现乱码!

本日小编就同各人一路梳理下怎样正确改换数据库的字符集,下文将简朴讲授数据库差异字符集的转换进程。步调转化,杜绝乱码!
常用字符集
- GBK是国度尺度GB2312基本上扩容后兼容GB2312的尺度。GBK的笔墨编码是用双字节来暗示的,即岂论中、英笔墨符均行使双字节来暗示,为了区分中文,将其最高位都设定成1。GBK包括所有中笔墨符,是国度编码,通用性比UTF8差,不外UTF8占用的数据库比GBK大。支持简体中文及繁体中文。
- utf8字符集:是一种UTF-8编码的Unicode字符集,每个字符占用1到3个字节。UTF-8包括全天下全部国度必要用到的字符,是国际编码,通用性强。
- utf8mb4字符集:是一种UTF-8编码的Unicode字符集,每个字符占用1到4个字节。可以包围BMP范畴内的字符和填补字符。BMP范畴内的字符编码和utf8字符齐集的编码是完全沟通的,长度也是完全一样的,以是utf8mb4字符集可以兼容utf8字符集。
- GB2312是GBK的子集,GBK是GB18030的子集。
- big5支持繁体中文
转化进程
以下模仿的是将latin1字符集的数据库修改成GBK的进程 。其他字符集的转换进程相同。必要留意的是要转换的方针字符集必然是源字符集的超等可能方针字符集的范畴包括源字符集的范畴。
1. 导表布局
- mysqldump -uroot -p --default-character-set=gbk -d databasename >createtb.sql
个中--default-character-set=gbk暗示配置以什么字符集毗连,-d暗示只导出表布局,不导出数据。
2. 手工修改createtb.sql中表布局界说中的字符集为新的字符集。
3. 确保记录不再更新,导出全部记录
- mysqldump -root -p --quick --no-create-info --extended-insert --default-character-set=latin1 databasename>data.sql
- quick:该选项用于转储大的表。它逼迫mysqldump从处事器一次一行地检索表中的行而不是全部的行,并在输出前将它缓冲到内存中。
- extended-insert:行使包罗几个values列表的多行insert语法。这样使转储文件更小,重载文件时可以加快插入。
- no-create-info:不导出每个转储表的create table语句。
- default-character-set=latin1:凭证原有的字符集导出全部数据。这样导出的文件中,全部中文都是可见的,不会生涯成乱码。
4. 打开data.sql,将set names latin1修改成set names bgk.
5. 行使新的字符集建设新的数据库。
- create database databasename default charset bgk;
6. 建设表,执行createtab.sql
- mysql -root -p databasename <createtb.sql
7. 导入数据,执行data.sql
- mysql -root -p databasename <data.sql
总结
新的字符集必然要是原字符集的超集,否则转化之后,数据会呈现乱码。常见字符集转换如下:
【编辑保举】 - 稀有据的处所必有库,详解相关型数据库的成长汗青
- 详解Oracle数据库Redo log的六种状态
- 10个顶级Mongodb GUI器材,以图形方法打点数据库
- 10个顶级Mongodb GUI器材,以图形方法打点数据库
- 10分钟把握MySQL的索引查询优化能力
【责任编辑:赵宁宁 TEL:(010)68476606】
点赞 0 (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|