修改表名_面试官:如何批量修改mysql表字段、表、数据库字符集和排序规则

概述

目前数据库字符集统一用的utf8,由于项目需要,引进了表情,但是utf8mb5才支持表情字符,所以需统一修改数据库字符集,下面介绍批量修改数据库字符集的办法。

修正顺序是字段级别>表级别>库级别。


一、批量修改整个数据库字符集(字段级别)

统一将字符字符集变成utf8_general_ci

SELECT TABLE_SCHEMA '数据库', TABLE_NAME '表', COLUMN_NAME '字段', CHARACTER_SET_NAME '原字符集', COLLATION_NAME '原排序规则', CONCAT( 'ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' MODIFY COLUMN ', COLUMN_NAME, ' ', COLUMN_TYPE, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;' ) '修正SQL' FROM information_schema.`COLUMNS` WHERE TABLE_SCHEMA = 'lcpdb1'  AND CHARACTER_SET_NAME = 'utf8';

utf8是我demo的模糊匹配排序规则,这里需要替换为你数据库中需要替换的字段的排序规则,utf8mb4设置的是替换的字符集,utf8mb4_general_ci设置的是替换的排序规则,可以换为需要修正为什么标准

83227705af5bc083d2f64baf0f4247f4.png

二、批量修改整个数据库字符集(表级别)

1、创建批量修改语句

修改单个表的字符集的命令是:alter table 表名 convert to character set utf8mb4 collate utf8mb4_bin;

创建修改语句的命令是:

SELECT TABLE_SCHEMA '数据库', TABLE_NAME '表', TABLE_COLLATION '原排序规则', CONCAT( 'ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' COLLATE=utf8mb4_general_ci;' ) '修正SQL' FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = 'lcpdb1'  AND TABLE_COLLATION = 'utf8_general_ci';
304b94bbb500e8bb4560c67cc96aed0e.png

将上面的修正SQL语句批量复制,然后全部执行。


三、批量修改多个数据库字符集(库级别)

1、找出MySQL实例中字符集不是utf8mb4的数据库

SELECT * FROM information_schema.`SCHEMATA` WHERE DEFAULT_COLLATION_NAME<>'utf8_general_ci';
e1660a1fad7b8e1538e97f11e34d26f5.png

2、批量修改

SELECT SCHEMA_NAME '数据库', DEFAULT_CHARACTER_SET_NAME '原字符集', DEFAULT_COLLATION_NAME '原排序规则', CONCAT( 'ALTER DATABASE ', SCHEMA_NAME, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;' ) '修正SQL' FROM information_schema.`SCHEMATA` WHERE DEFAULT_CHARACTER_SET_NAME='utf8';
a2a6250a29ab86e2789cb1fac7394c0f.png

觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

1cdf5b79da4cceb75928932f5bf605ac.gif

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

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

相关文章

Maven命令 install 和 package的区别

Maven命令 install 和 package的区别 Maven是目前十分流行的项目构建工具以及依赖解决工具&#xff0c;其提供的常用指令中有两个很容易引起使用者的疑惑&#xff0c; 那就是 install 和 package &#xff0c; 那么这两个命令到底有啥区别呢&#xff1f; Maven install 安装…

如何重启_消费市场按下重启键,企业该如何提前布局

2020广发卡携手企业和消费者&#xff0c;共同按下重启键&#xff0c;让我们放下包袱&#xff0c;轻松前行。当疫情结束后&#xff0c;你想做什么&#xff1f;也许是去见想见的人&#xff0c;和他一起去吃想吃的美食&#xff1b;也许是约上三五好友&#xff0c;或带着最亲的家人…

Linux中使用netstat命令的基本操作,排查端口号的占用情况

Linux中netstat命令详解 Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具&#xff0c;它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据&#xff0c;一般用于检验本机各端口的网络连接情…

与context的关系_Android-Context

一.简介Context 翻译为上下文环境&#xff0c;是一个应用程序环境信息的接口。如果以 Android 系统角度来看可以理解为某一与操作系统的交互的具体场景&#xff0c;比如 Activity 的具体功能&#xff0c;Service 的后台运行等。如果以程序的角度看&#xff0c;Context 是一个抽…

Linux中sudo、su和su -命令的区别

Linux中sudo、su和su -命令的区别小结 我们知道&#xff0c;在Linux下对很多文件进行修改都需要有root&#xff08;管理员&#xff09;权限&#xff0c;比如对/ect/profile等文件的修改。下面这篇文章主要给大家总结介绍了关于Linux中sudo、su和su -命令的区别的相关资料&…

如何根据进程号去查端口号?

1.查出进程号 eg: ps -ef |grep conet- 2.根据当前进程号获得端口号&#xff1a; eg: netstat -anp |grep 4118 得到当前的端口是8761

Linux中如何查看某个端口是否被占用的方法

LINUX中如何查看某个端口是否被占用的方法 之前查询端口是否被占用一直搞不明白&#xff0c;现在总结下&#xff1a; 1.netstat -anp |grep 端口号 如下&#xff0c;我以3306为例&#xff0c;netstat -anp |grep 3306&#xff08;此处备注下&#xff0c;我是以普通用户操作&…

深入理解synchronized底层原理

文章目录前言一、synchronized的特性1.1 原子性1.2 可见性1.3 有序性1.4 可重入性二、synchronized的用法三、synchronized锁的实现3.1 同步方法3.2 同步代码块四、synchronized锁的底层实现五、JVM对synchronized的优化5.1 锁膨胀5.1.1 偏向锁5.1.2 轻量级锁5.1.3 重量级锁5.2…

centos7重新加载服务的命令_CentOS7 从查看、启动、停止服务说起systemctl

执行命令“systemctl status 服务名.service”可查看服务的运行状态&#xff0c;其中服务名后的.service 可以省略&#xff0c;这是CenOS7以后采用systemd作为初始化进程后产生的变化。Systemctl是一个systemd工具&#xff0c;主要负责控制systemd系统和服务管理器。Systemd是一…

一体化住户调查_曲麻莱县2020年城乡一体化住户调查表彰会暨年报部署会

为全面推进我县城乡一体化住户调查工作&#xff0c;总结经验、鼓励优秀&#xff0c;提高统计员和辅助调查员的工作积极性&#xff0c;提高账本数据质量&#xff0c;11月25日下午&#xff0c;县统计局组织召开2020年全县城乡一体化住户调查工作表彰会暨年报部署会。全县6个镇的统…

电力系统继电保护第二版张保会_电力系统继电保护试题

一、填空题(每小题1分&#xff0c;共20分)1.电气元件配置两套保护&#xff0c;一套保护不动作时另一套保护动作于跳闸&#xff0c;称为_近后备_保护。2.电流继电器的_返回_电流与动作电流的比值称为继电器的返回系数。3.反应电流增大而瞬时动作的保护称为__无时限电流速断保护_…

Linux中shell脚本详解

文章目录1、第一个脚本程序&#xff1a;2、shell获取字符串长度&#xff1a;3、shell变量&#xff1a;4、**引用shell变量**&#xff1a;5、shell变量的赋值、修改、删除&#xff1a;5、shell特殊变量&#xff1a;6、shell中字符串的拼接&#xff1a;**7、字符串的截取**8、she…

java递归实现多级菜单栏_Java构建树形菜单以及支持多级菜单的实例代码

这篇文章主要介绍了Java构建树形菜单的实例代码(支持多级菜单),非常不错&#xff0c;具有参考借鉴价值&#xff0c;需要的朋友可以参考下效果图&#xff1a;支持多级菜单。菜单实体类&#xff1a;public class Menu {// 菜单idprivate String id;// 菜单名称private String nam…

java中clone方法的理解(深拷贝、浅拷贝)

文章目录前言&#xff1a;知识点一&#xff1a;什么是浅拷贝&#xff1f;知识点二&#xff1a;什么是深拷贝&#xff1f;知识点三、java拷贝&#xff08;clone&#xff09;的前提&#xff1a;知识点四&#xff1a;浅拷贝案例&#xff1a;拷贝类&#xff1a;测试类&#xff1a;总…

mysql实现内容加密_简单为mysql 实现透明加密方法

一般用户在数据库中保存数据&#xff0c;虽然数据库存储的是二进制&#xff0c;无法直接明文打开查看&#xff0c;但是如果是一个外行人&#xff0c;直接连接进入mysql中&#xff0c;还是可以直接查看数据的。所以对于一些核心数据&#xff0c;特别是企业重要数据资产&#xff…

Java之AQS(AbstractQueuedSynchronizer)

Java之AQS&#xff08;AbstractQueuedSynchronizer&#xff09; AQS 介绍 AQS 的全称为 AbstractQueuedSynchronizer &#xff0c;翻译过来的意思就是抽象队列同步器。这个类在 java.util.concurrent.locks 包下面。 ● 是用来实现锁或者其他同步器组件的公共基础部分的抽象实…

SpringBoot 3.0最低版本要求的JDK 17,这几个新特性不能不知道

最近&#xff0c;有很多人在传说 SpringBoot要出3.0的版本了&#xff0c;并且宣布不再支持 Java 8&#xff0c;最低要求是 Java 17了。 其实&#xff0c;早在2021年9月份&#xff0c;关于 Spring Framework 6.0的消息出来的时候&#xff0c;Spring 官方就已经明确了不会向下兼…

jmeter mysql数据导出_Jmeter连接mysql

一、下载添加jar包image.png添加方法&#xff1a;1.拷贝到jmeter/lib目录下&#xff0c;此方法需重启jmeter2.直接在jmeter的测试计划中导入image.png二、连接mysql数据库添加配置元件-JDBC Connection Configurationimage.pngimage.png1.Variable Name for created pool&#…

判断一个坐标点是否在不规则多边形内部的算法

参考&#xff1a;https://wrf.ecse.rpi.edu//Research/Short_Notes/pnpoly.html 在GIS&#xff08;地理信息管理系统&#xff09;中&#xff0c;判断一个坐标是否在多边形内部是个经常要遇到的问题。乍听起来还挺复杂。根据W. Randolph Franklin 提出的PNPoly算法&#xff0c;…

mysql++多版本安装_MySQL多版本多实例安装启动

多版本&#xff0c;大版本不同测试多实例&#xff0c;一个MySQL5.7.30一个MySQL8.0.20解压8.0tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tartar -xJf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz改名移动/mysql8.0.20mv mysql-8.0.20-linux-glibc2.12-x86_64 /mysql8.0.2…