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秒

数据库设计这块非常重要,在设计数据库时一定要考虑清楚。地基不牢,大厦迟早会倒的。

-------------------------------------------------------------------------------------------------------------------------

以下的文章主要介绍的是MySQL字符集的基本类型, 统一字符集的实际操作方法,等相关内容的介绍,以下就是MySQL字符集的相关内容的描述,希望你会在以后的学习或是工作中带来很大的帮助。

一. MySQL字符集类型

MySQL服务器中有六个关键位置使用了字符集的概念,他们是:client 、connection、database、results、server 、system。

a、其中client是客户端使用的字符集,相当于网页中的字符集设置如下<meta http-equiv="Content-Type" content="text/html; charset=utf-8">。

b、其中的connection是连接数据库的MySQL字符集设置类型,如果php没有指明连接数据库使用的字符集类型,就按照服务器端默认的字符集设置。

c、其中database是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。

d、results是数据库给客户端返回时使用的MySQL字符集设定,如果没有指明,使用服务器默认的字符集。

e、server是服务器安装时指定的默认字符集设定。

f、 system是数据库系统使用的字符集设定。

PS:

1. system一般默认是utf-8字符集,server是最高的字符集设定,database没有单独设定就按照server的字符集设定,其他都是按照server的设定设置字符集。

2. 数据库内的每个表和字段也都有字符集的概念,一般都是根据上一级结构决定自身的字符集,比如表就根据database库的设定决定自己的字符集,字段根据表来决定自己的字符集。

二. 统一字符集的方法:(以utf-8字符集来进行安装)

1. 要彻底解决字符集的方法就是让MySQL在安装的时候就是用utf-8的字符集设定(默认为latin1),这样可以使上面的六个关键点的编码都为utf-8。

2. 使用STATUS命令查看MySQL中各个类别字符集的状态。

也可用SHOW VARIABLES LIKE 'character_set_%' 查看MySQL字符集的一些设置情况。

三. 若MySQL在安装时的字符集设置为latin1

可以在建库时,指定数据库的字符集为utf8。

  1. CREATE DATABASE qss DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 

以上的相关内容就是对MySQL字符集总结的介绍,望你能有所收获。

-------------------------------------------------------------------------------------------------------------

0.查看数据库服务相关字符集:
show variables like 'character%';

1.查询指定数据库所有表的字符集情况:
show table status from immp_finance;
(通过编辑器筛选出需要的列)

2.查看指定表所有列的信息:
show full columns from fi_receipt_aux;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值