MySQL字符集统一修改批量操作数据库中的表及字段

打印 上一主题 下一主题

主题 802|帖子 802|积分 2406

mysql版本: 8.0.25
情况: mac
工具: DBeaver
需求:项目的字段字符集不一致导致项目sql报错  统一修改为:utf8mb4_general_ci
解决思路:网上找了其他的解决方案发现都不太适合新手,故而记录一下
关于修改全部表的字符集
-- 修改全部表结构字符集语句
  1. 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_COLLATION IS NOT NULL
复制代码
实行效果:

注意:
CONCAT('ALTER TABLE ',TABLE_SCHEMA,'.', TABLE_NAME, ' COLLATE=utf8mb4_general_ci;') '修正SQL'
利用CONCAT函数 拼接的修正sql,指定要修改的字符集COLLATE=utf8mb4_general_ci; 
得到修正的sql,复制下来,实行即可

关于修改全部表中字段的字符集
-- 修改全部表中字段字符集语句
  1. 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='qianyu_test' AND CHARACTER_SET_NAME IS NOT NULL
复制代码
实行效果:
注意:
这里指定了数据名称,需要自行修改
TABLE_SCHEMA='qianyu_test' 此中的qianyu_test需要修改为自己的数据库
如 TABLE_SCHEMA='adminDB'
利用CONCAT函数 拼接的修正sql,指定要修改的字符集COLLATE=utf8mb4_general_ci; 
得到修正的sql,复制下来,实行即可

补充:
information_schema.schemata 数据库的元数据信息
information_schema.tables 数据表的元数据信息
information_schema.COLUMNS  表字段的元数据信息
SELECT * FROM information_schema.schemata

SELECT * FROM information_schema.tables

SELECT * FROM information_schema.COLUMNS

使用mysql中的元数据 根据自己的需求可以实现很多的统一修改批量操作

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

兜兜零元

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表