Mysql 表字符集变更

背景

线上有几张表的字符集是 latin1,要求换成utf8mb4。至于操作的时机则需要自行判断。

1.查看库中所有字符集为latin1的所有表

sql 复制代码
SELECT
	DISTINCT
	table_schema,
	table_name,
	collation_name,
	character_set_name,
	CONCAT('ALTER TABLE ', table_schema, '.', table_name, ' CONVERT TO CHARACTER SET \'utf8mb4\' COLLATE \'utf8mb4_general_ci\';') '修正SQL'
FROM
	information_schema.COLUMNS 
WHERE
	COLLATION_NAME IS NOT NULL 
	AND COLLATION_NAME LIKE 'latin1%';

2.备份所有相关表

进入 mysql 安装目录下的 bin 目录使用 mysqldump 命令进行表备份。

2.1 备份表结构和数据(用作恢复):

示例:mysqldump -uroot -p [库名] [表名] > 某个表的结构和数据备份文件.sql

回车后输入密码执行备份。

2.2 仅备份数据(用于修改字符集后导入数据):

示例:mysqldump -t -uroot -p [库名] [表名] > 某个表的数据备份文件.sql

回车后输入密码执行备份。

3.问题表依次执行

3.1 查看原有索引并记录成创建SQL

示例:SHOW INDEX FROM [库名].[表名];

3.2 清空表

示例:TRUNCATE TABLE [库名].[表名];

3.3 删除索引

示例:ALTER TABLE [库名].[表名] DROP INDEX [索引名称];

3.4 修改字符集

示例:ALTER TABLE [库名].[表名] CONVERT TO CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';

3.5 创建索引

示例:CREATE INDEX [索引名称] ON [库名].[表名]([字段名...]);

3.6 导入数据

进入 mysql 安装目录下的 bin 目录使用 mysql 命令进行数据导入。

示例:mysql -uroot -p [库名] < 某个表的数据备份文件.sql

相关推荐
数据馅1 分钟前
python自动生成pg数据库表对应的es索引
数据库·python·elasticsearch
峰子201219 分钟前
B站评论系统的多级存储架构
开发语言·数据库·分布式·后端·golang·tidb
胡耀超1 小时前
CentOS 7.9(linux) 设置 MySQL 8.0.30 开机启动详解
linux·mysql·centos
浏览器爱好者2 小时前
如何使用MongoDB进行数据存储?
数据库·mongodb
yuanpan2 小时前
MongoDB中的横向扩容数据分片
数据库·mongodb
草明2 小时前
Mongodb 慢查询日志分析 - 1
数据库·python·mongodb
yuanpan2 小时前
MongoDB的事务机制
数据库·mongodb
SelectDB2 小时前
Apache Doris 2.1.8 版本正式发布
大数据·数据库·数据分析
计算机学姐4 小时前
基于微信小程序的民宿预订管理系统
java·vue.js·spring boot·后端·mysql·微信小程序·小程序
云和恩墨4 小时前
云计算、AI与国产化浪潮下DBA职业之路风云变幻,如何谋破局启新途?
数据库·人工智能·云计算·dba