Chinaunix首页 | 论坛 | 博客
  • 博客访问: 658820
  • 博文数量: 163
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1625
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-24 11:40
个人简介

资深Oracle数据库专家 OCM认证大师 10年数据库相关服务及开发经验 各类数据库相关方案的编写,管理及实施 数据中心数据库日常运维、大型项目割接、性能优化等方面有丰富的实战经验 客户包括: 电信,银行,保险,航空,国网,汽车,烟草等 想要一起学习探讨数据安全技术的请加qq群 256041954

文章分类

全部博文(163)

文章存档

2017年(2)

2016年(112)

2015年(38)

2014年(11)

我的朋友

分类: Mysql/postgreSQL

2016-08-17 16:50:34

将latin1更改为gbk
Mysql字符集介绍:

mysql的字符集包括字符集(CHARACTER)和校对规则(COLLATION)两个概念。字符集是用来定义mysql存储字符串的方式,校对规则则是定义了比较字符串的方式。字符集和校对规则是一对多的关系, MySQL支持30多种字符集的70多种校对规则。 每个字符集至少对应一个校对规则。可以用SHOW COLLATION LIKE 'utf8%';命令查看相关字符集的校对规则。

字符集设置

mysql的字符集和校对规则有4个级别的默认设置:服务器级、数据库级、表级和字段级。分别在不同的地方设置,作用也不相同。 服务器字符集和校对,在mysql服务启动的时候确定。可以在my.cnf中设置:     [mysqld]     default-character-set=utf8 或者在启动选项中指定:     mysqld --default-character-set=utf8 或者在编译的时候指定:     ./configure --with-charset=utf8 如果没有特别的指定服务器字符集,默认使用latin1作为服务器字符集。上面三种设置的方式都只指定了字符集,没有指定校对规则,这样是使用该字符集默认的校对规则,如果要使用该字符集的非默认校对规则,则需要在指定字符集的同时指定校对规则。 可以用show variables like 'character_set_server';命令查询当前服务器的字符集和校对规则。

通过MYsql名利行修改字符集:

更改客户端、服务器、数据库字符集的命令

set character_set_client=utf8;      

set character_set_connection=utf8;  

set character_set_database=utf8;    

set character_set_results=utf8;     

set character_set_server=utf8;      

set character_set_system=utf8;      

set collation_connection=utf8;      

set collation_database=utf8;        

set collation_server=utf8;          

查看字符集:

show variables like 'collation_%';

show variables like 'character_set_%';

修改数据库字符集:

1 ---1.修改数据库字符集
2 alter database mini default character set = gb2312; 
3 ----2.创建数据库设置字符集
4 create database mydb character set gb2312;

修改表字符集:

1 alter table pub_logs default character set = gb2312; 
2 alter table pub_logs convert to character set gb2312;

生成批量改表字符集:

1 SELECT a.TABLE_TYPE,CONCAT('alter TABLE ',A.TABLE_NAME,' default character set = gb2312;')  FROM INFORMATION_SCHEMA.TABLES A
2 WHERE A.TABLE_SCHEMA='MINI'
3 AND a.TABLE_TYPE='BASE TABLE'
4 ;
生成批量更改列字符集:
 SELECT CONCAT(CONCAT(CONCAT('alter TABLE ',c.TABLE_NAME,' modify'),CONCAT(' ',C.COLUMN_NAME,' '),C.COLUMN_TYPE),' ',' character set gb2312 COLLATE gb2312_chinese_ci;') AS CLOU
 FROM 
 INFORMATION_SCHEMA.COLUMNS C,INFORMATION_SCHEMA.TABLES A
 WHERE c.TABLE_SCHEMA='MINI'
   AND A.TABLE_NAME=c.TABLE_NAME
   AND A.TABLE_TYPE='BASE TABLE'
   AND c.DATA_TYPE='varchar';


1.2  字符集的修改步骤
1):导出表结构
mysqldump -uroot -p --default-character-set=gbk -d test>createtab.sql
(2):手动修改createtab.sql中表结构定义中的字符集为新的字符集
(3):停应用(确保无数据更新),导出所有记录
mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=latin1 test>data.sql
(4):打开data.sql SET NAMES latin1修改成SET NAMES gbk
5):create database test1  default charset gbk;
(6):执行data.sql
mysql -uroot -p test1
 
阅读(2318) | 评论(0) | 转发(0) |
0

上一篇:MySQL 5.7新特性介绍

下一篇:Oracle ADDM研究

给主人留下些什么吧!~~