兜兜零元 发表于 2024-9-3 04:18:37

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

mysql版本: 8.0.25
情况: mac
工具: DBeaver
需求:项目的字段字符集不一致导致项目sql报错  统一修改为:utf8mb4_general_ci
解决思路:网上找了其他的解决方案发现都不太适合新手,故而记录一下
关于修改全部表的字符集
-- 修改全部表结构字符集语句
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 实行效果:https://img-blog.csdnimg.cn/direct/85af3a69f9d34994a736bdbaa96f84da.png
注意:
CONCAT('ALTER TABLE ',TABLE_SCHEMA,'.', TABLE_NAME, ' COLLATE=utf8mb4_general_ci;') '修正SQL'
利用CONCAT函数 拼接的修正sql,指定要修改的字符集COLLATE=utf8mb4_general_ci; 
得到修正的sql,复制下来,实行即可

关于修改全部表中字段的字符集
-- 修改全部表中字段字符集语句
SELECTTABLE_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.COLUMNSWHERETABLE_SCHEMA='qianyu_test' AND CHARACTER_SET_NAME IS NOT NULL 实行效果:https://img-blog.csdnimg.cn/direct/7ea09b81f83c4850916c546ecd04f204.png注意:
这里指定了数据名称,需要自行修改
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
https://img-blog.csdnimg.cn/direct/8cfe1cd8e0834d28816a1fbffee981be.png
SELECT * FROM information_schema.tables
https://img-blog.csdnimg.cn/direct/7b253ecd06444d299679e6cd574a9c07.png
SELECT * FROM information_schema.COLUMNS
https://img-blog.csdnimg.cn/direct/1373ba7626264114ad3c6192944cff7a.png
使用mysql中的元数据 根据自己的需求可以实现很多的统一修改批量操作

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: MySQL字符集统一修改批量操作数据库中的表及字段