MySQL修改已存在数据的字符集

在实际应用中,如果一开始没有正确的设置字符集,在运行一段时间以后,才发现当前字符集不能满足要求,需要进行调整,但又不想丢弃这段时间的数据,这个时候就需要修改字符集。

在MySQL设置默认字符集和校对规则,一节我们讲到,ALTER DATABASE 或 ALTER TABLE 命令对已经存在的数据没有作用,只对新创建的表或记录生效。如果想修改已存在数据的字符集,需要先将数据导出,经过适当的调整后,再重新导入。

例 1

以下模拟的是将 gb2312 字符集的数据库修改成 gbk 字符集的数据库的过程。

1)创建 testset 数据库,设置其字符集为 gb2312,并添加数据。

mysql> CREATE TABLE test.testset(-> id INT(11) DEFAULT NULL,-> name VARCHAR(25) DEFAULT NULL-> )CHARSET=gb2312;
Query OK, 0 rows affected (0.10 sec)mysql> INSERT INTO test.testset VALUES (1,'C语言');
Query OK, 1 row affected (0.01 sec)mysql> INSERT INTO test.testset VALUES (2,'Java语言');
Query OK, 1 row affected (0.01 sec)mysql> INSERT INTO test.testset VALUES (3,'Python语言');
Query OK, 1 row affected (0.01 sec)

2)导出 testset 表结构,命令如下:

mysqldump -uroot -p --default-character-set=gbk -d test testset> D:\testset.sql

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

3)打开 testset.sql 文件,修改表结构定义中的字符集为新的字符集,如下图所示。
 

修改表结构的字符集


4)确保表中的记录不再更新,导出所有记录。

mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=gb2312 test testset> D:\testdata.sql

  • --quick:该选项用于存储记录多的表。它强制 mysqldump 从服务器一次一行地查询表中的行,而不是查询所有行,并在输出前将它缓存到内存中。
  • --extended-insert:使用 INSERT 插入多行数据语法。可以使文件更小,导入文件时加速插入。
  • --no-create-info:不导出表的 CREATE TABLE 语句。
  • --default-character-set=gb2312:按照原有的字符集导出所有数据。这样导出的文件中,所有中文都是可见的,不会保存成乱码。


5)打开 testdata.sql,将 SET NAMES gb2312 修改成 SET NAMES gbk,如下图所示。
 


6)使用新的字符集创建新的数据库。

CREATE DATABASE test2 DEFAULT CHARSET gbk;


7)创建表,执行 testset.sql。

mysql -uroot -p test2 < D:\testset.sql


8)导入数据,执行 testdata.sql。

mysql -uroot -p test2 < D:\testdata.sql


9)查看 testset 表结构是否修改了字符集,以及表内数据是否丢失或乱码,SQL 语句和运行结果如下:

mysql> SHOW CREATE TABLE test2.testset \G
*************************** 1. row ***************************Table: testset
Create Table: CREATE TABLE `testset` (`id` int(11) DEFAULT NULL,`name` varchar(25) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk
1 row in set (0.00 sec)mysql> SELECT * FROM test2.testset;
+------+------------+
| id   | name       |
+------+------------+
|    1 | C语言      |
|    2 | Java语言   |
|    3 | Python语言 |
+------+------------+
3 rows in set (0.00 sec)

注意:选择目标字符集的时候,要注意最好的是原字符集的超集,或者确定比原字符集的字库更大,否则如果目标字符集的字库小于原字符集的字库,那么目标字符集中不支持的字符导入后会变成乱码,丢失一部分数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/184045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【探索Linux】—— 强大的命令行工具 P.18(进程信号 —— 信号捕捉 | 信号处理 | sigaction() )

阅读导航 引言一、信号捕捉1. 内核实现信号捕捉过程2. sigaction() 函数&#xff08;1&#xff09;函数原型&#xff08;2&#xff09;参数说明&#xff08;3&#xff09;返回值&#xff08;4&#xff09;函数使用 二、可重入函数与不可重入函数1. 可重入函数条件2. 不可重入函…

Pytorch模型编译报错 UserWarning: (Resize(), RandomResizedCrop(), etc.)——解决办法

1、问题描述 使用Pytorch训练模型时&#xff0c;编译报错&#xff1a; UserWarning: The default value of the antialias parameter of all the resizing transforms (Resize(), RandomResizedCrop(), etc.) will change from None to True in v0.17, in order to be consis…

redis 存储一个map 怎么让map中其中一个值设置过期时间,而不是过期掉整个map?

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》 🐾 学会IDEA常用操作,工作效率翻倍~💐 �…

linux socket套接字

文章目录 socket流socket&#xff08;TCP&#xff09;数据报socket&#xff08;UDP&#xff09; 讨论 socket 所谓套接字&#xff0c;就是对网络中不同主机上的应用程序之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端&#xff0c;套接字提供了应用层进程利…

【内网安全】搭建网络拓扑,CS内网横向移动实验

文章目录 搭建网络拓扑 ☁环境CS搭建,木马生成上传一句话&#xff0c;获取WebShellCS上线reGeorg搭建代理&#xff0c;访问内网域控IIS提权信息收集横向移动 实验拓扑结构如下&#xff1a; 搭建网络拓扑 ☁ 环境 **攻击者win10地址&#xff1a;**192.168.8.3 dmz win7地址&…

MyBatis教程之搭建(二)

1、开发环境 IDE&#xff1a;idea 2019.2 构建工具&#xff1a;maven 3.5.4 MySQL版本&#xff1a;MySQL 5.7 MyBatis版本&#xff1a;MyBatis 3.5.7 2、创建maven工程 <dependencies><!-- Mybatis核心 --><dependency><groupId>org.mybatis</…

VSCode 代码调试

断点调试&#xff08;debug&#xff09;&#xff1a; 指在程序的某一行设置一个断点&#xff0c;调试时&#xff0c;程序运行到这一行就会停住&#xff0c;然后你可以一步一步往下调试&#xff0c;调试过程中可以看各个变量当前的值&#xff0c;出错的话&#xff0c;调试到出错…

PostgreSQL-SQL联表查询LEFT JOIN 数据去重复

我们在使用left join联表查询时&#xff0c;如果table1中的一条记录对应了table2的多条记录&#xff0c;则会重复查出id相同的多条记录。 1、解决方法一 SELECT t1.* FROM table1 t1 LEFT JOIN table2 t2 ON t1.id t2.tid 第一种方法我们发现还是有重复数据 2、解决方法二…

Spark_spark hints 详细介绍

spark 中hints 的优先级高于&#xff0c;代码中的config, 高于spark_submit 中的commit Hints - Spark 3.5.0 Documentation

无限移动的风景 css3 动画

<style>*{margin:0;padding:0;/* box-sizing: border-box; */}ul{list-style: none;}#nav{width:900px;height:100px;border:2px solid rgb(70, 69, 69);margin:100px auto; overflow: hidden;}#nav ul{animation:moving 5s linear infinite;width:200%; /*怎么模拟动画…

【数据挖掘】国科大刘莹老师数据挖掘课程作业 —— 第二次作业

Written Part 1. 给定包含属性&#xff5b;Height, Hair, Eye&#xff5d;和两个类别&#xff5b;C1, C2&#xff5d;的数据集。构建基于信息增益&#xff08;info gain&#xff09;的决策树。 HeightHairEyeClass1TallBlondBrownC12TallDarkBlueC13TallDarkBrownC14ShortDark…

selenium写一个自动化程序查看作业的未提交名单

selenium写一个自动化程序 7.17 结合selenium写一个自动化程序&#xff0c;完成的功能&#xff08;看哪些人提交了&#xff0c;哪些人没提交&#xff09; 遇到的难点1&#xff1a;定位某一个用户名 解决方案1&#xff1a;元素定位并优化 经常使用的jupyter快捷键命令&#x…

Java实现简单的王者荣耀游戏

一、创建新项目 首先创建一个新的项目&#xff0c;并命名为wangzherongyao。 其次在飞翔的鸟项目下创建一个名为img的文件夹用来存放游戏相关图片。详细如下图&#xff1a; 二、游戏代码 1、创建怪物类 1.bear&#xff1a; package beast;import wangzherogyao.GameFrame;…

Java给钉钉机器人发送消息

示例代码 import org.slf4j.Logger; import org.slf4j.LoggerFactory;import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets;/*** author : yx-0176* description* date : 2023/11/27*/ public a…

数据结构与算法之递归: LeetCode 46. 全排列 (Typescript版)

全排列 https://leetcode.cn/problems/permutations/ 描述 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,…

a-table:表格组件常用功能记录——基础积累2

antdvue是我目前项目的主流&#xff0c;在工作过程中&#xff0c;经常用到table组件。下面就记录一下工作中经常用到的部分知识点。 a-table&#xff1a;表格组件常用功能记录——基础积累2 效果图1.table 点击行触发点击事件1.1 实现单选 点击事件1.2 实现多选 点击事件1.3 实…

知识社区问答平台源码系统 开源的知识问答平台 附带完整的搭建教程

互联网的快速发展&#xff0c;人们对于知识的需求越来越高。知识社区问答平台源码系统是一款基于开源框架搭建的知识问答平台&#xff0c;旨在帮助人们快速、准确地获取所需知识&#xff0c;提高学习效率。 以下是部分代码示例&#xff1a; 系统特色功能一览&#xff1a; 1.知…

坚守合规底线 波场TRON将联合多方不断提升合规水平

数字化时代,区块链和加密技术因其去中心化、全球化及透明度等优势在金融科技领域备受关注,但与此同时,一些风险事件的发生也暴露了行业合规化缺乏等问题的存在。近期,有媒体报道称,波场TRON或成为少数非法组织尤其是美国认定的恐怖组织融资的工具。对此,波场TRON与其创始人孙宇…

进阶必看:一文搞懂中台战略与企业架构关系

摘要 随着数字化时代的到来&#xff0c;企业在不断追求创新和效益的过程中&#xff0c;中台战略逐渐成为企业转型的关键一环。本文将深入剖析中台战略与企业架构之间的关系&#xff0c;探讨中台战略对企业架构的升华和重构。 1. 中台战略的定义与背景 中台战略是指在企业内部建…

什么是消息队列

什么是消息队列 MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出队列&#xff0c;只不过队列中存放的内容是 message 而已&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递消息。在互联网架构中&#xff0c;M…