千家信息网

Mysql中怎么修改表字符集

发表于:2024-09-27 作者:千家信息网编辑
千家信息网最后更新 2024年09月27日,本篇文章给大家分享的是有关Mysql中怎么修改表字符集,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.导出表结构mysqldump -
千家信息网最后更新 2024年09月27日Mysql中怎么修改表字符集

本篇文章给大家分享的是有关Mysql中怎么修改表字符集,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

1.导出表结构

  1. mysqldump -uroot -p --default-character-set=gbk -d sam> createtab.sql

参数说明:

default-character-set=gbk 表示设置以什么字符集连接,-d 表示只导出表结构,不导数据


2.修改createtab.sql脚本中字符集为新字符集

  1. [root@sam ~]# cat createtab.sql

  2. -- MySQL dump 10.13 Distrib 5.6.24, for Linux (x86_64)

  3. --

  4. -- Host: localhost Database: sam

  5. -- ------------------------------------------------------

  6. -- Server version 5.6.24-enterprise-commercial-advanced


  7. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

  8. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

  9. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

  10. /*!40101 SET NAMES gbk */;

  11. /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;

  12. /*!40103 SET TIME_ZONE='+00:00' */;

  13. /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;

  14. /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

  15. /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

  16. /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;


  17. --

  18. -- Table structure for table `sam1`

  19. --


  20. DROP TABLE IF EXISTS `sam1`;

  21. /*!40101 SET @saved_cs_client = @@character_set_client */;

  22. /*!40101 SET character_set_client = utf8 */;

  23. CREATE TABLE `sam1` (

  24. `id` int(11) DEFAULT NULL,

  25. `name` varchar(20) DEFAULT NULL

  26. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 换成 gbk;

  27. /*!40101 SET character_set_client = @saved_cs_client */;

  28. /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;


  29. /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;

  30. /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

  31. /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;

  32. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

  33. /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

  34. /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

  35. /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;


  36. -- Dump completed on 2017-06-14 22:39:07

3.数据无更新状态,导出数据

  1. [root@sam ~]# mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=latin1 sam>samdata.sql

参数说明:

--quick 该选项用于转储大的表。它强制mysqldump从服务器一次一行地检索表中的行而不是检索所有行,并在输出前将它缓存到内存中

--no-create-info 不写重新创建每个转储表的 CREATE TABLE 语句

--extended-insert 使用包括几个VALUES列表的多行INSERT语法。这样使转储文件更小,加载文件时可以加速插入

--default-character-set=latin1 按照原有的字符集导出所有数据,这样导出的文件中,所有中文都是可见的,不会保存成乱码

4.打开 samdata.sql,将SET NAMES latin1 修改成 SET NAMES gbk

  1. [root@sam ~]# cat samdata.sql

  2. -- MySQL dump 10.13 Distrib 5.6.24, for Linux (x86_64)

  3. --

  4. -- Host: localhost Database: sam

  5. -- ------------------------------------------------------

  6. -- Server version 5.6.24-enterprise-commercial-advanced


  7. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

  8. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

  9. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

  10. /*!40101 SET NAMES latin1 改成 gbk*/;

  11. /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;

  12. /*!40103 SET TIME_ZONE='+00:00' */;

  13. /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;

  14. /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

  15. /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

  16. /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;


  17. --

  18. -- Dumping data for table `sam1`

  19. --


  20. LOCK TABLES `sam1` WRITE;

  21. /*!40000 ALTER TABLE `sam1` DISABLE KEYS */;

  22. INSERT INTO `sam1` VALUES (1,'a'),(2,'b'),(3,'c');

  23. /*!40000 ALTER TABLE `sam1` ENABLE KEYS */;

  24. UNLOCK TABLES;

  25. /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;


  26. /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;

  27. /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

  28. /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;

  29. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

  30. /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

  31. /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

  32. /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;


  33. -- Dump completed on 2017-06-14 22:47:23

5.使用新的字符集创建新的数据库

  1. mysql> create database sam_gbk default charset gbk;

  2. Query OK, 1 row affected (0.00 sec)

6.创建表,执行createtab.sql

  1. [root@sam ~]# mysql -uroot -p sam_gbk

7.导入数据,执行samdata.sql

  1. [root@sam ~]# mysql -uroot -p sam_gbk

8.验证

  1. mysql> use sam_gbk

  2. mysql> show create table sam1\G;

  3. *************************** 1. row ***************************

  4. Table: sam1

  5. Create Table: CREATE TABLE `sam1` (

  6. `id` int(11) DEFAULT NULL,

  7. `name` varchar(20) DEFAULT NULL

  8. ) ENGINE=InnoDB DEFAULT CHARSET=gbk

  9. 1 row in set (0.00 sec)


  10. ERROR:

  11. No query specified


  12. mysql> select * from sam1;

  13. +------+------+

  14. | id | name |

  15. +------+------+

  16. | 1 | a |

  17. | 2 | b |

  18. | 3 | c |

  19. +------+------+

  20. 3 rows in set (0.00 sec)

以上就是Mysql中怎么修改表字符集,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

字符 字符集 数据 文件 参数 更多 知识 篇文章 结构 检索 实用 一行 乱码 内存 就是 工作会 数据库 文章 服务器 状态 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广西万都互联网络科技有限公司 德惠智能化网络技术咨询有哪些 广东网络技术转移市价 在方舟中怎样自己创造服务器 服务器主板上管理接口怎么用 宿豫区工业网络技术大概费用 博世创新软件开发公司 图书管理数据库代码免费 服务器性能指标参数 晚上聊天软件开发 电脑服务器进不去系统 如何评价lol服务器 余姚安卓软件开发系统 华为云服务器备份服务 软件开发 组织结构 软件开发php学习 安卓查看数据库 服务器磁盘使用方法 河南麦秸影像网络技术有限公司 网络安全 做什么的 奉贤涉密信息系统集成软件开发 软件开发更新算无形资产吗 在方舟中怎样自己创造服务器 深圳pdu服务器电源批发 东城区定制软件开发直销价 战术小队有哪几个服务器 湖北互联网养老软件开发系统 电脑服务器外形 如何备份一个数据库的表结构 吃鸡服务器连接失败出现窗口
0