批量修改MySQL表字符集和排序規則

目錄

一、問題

二、修改字符集

三、修改庫字符集和排序規則

四、修改表和字段字符集以及排序規則

1、查詢並生成修改語句

2、生成簡潔的修改表以及字段字符集和排序規則的語句

一、問題
由於建庫建表指定的數據庫字符集和排序規則,和應用需求不一致,導致系統因字符集不一致異常。

 

二、修改字符集
該生產庫使用MySQL8.0版本,使用的默認字符集爲:utf8mb4 ;使用的排序規則是: utf8mb4_0900_ai_ci。

通過測試驗證和評估,需要修改該生產庫庫、表和字段的排序規則爲utf8mb4_general_ci和自字符集爲utf8mb4。

查看庫、表以及字段的字符集和排序規則命令

-- 查看庫、表以及字段的字符集和排序規則命令

-- 方法一

-- 1、查看指定庫排序規則和字符集

show create database '庫名字';


-- 2、查看指定表以及排序規則和字符集

show create table '表明字';


-- 方法二

select * from information_schema.`TABLES` where TABLE_SCHEMA='庫名字' and tables='表名字'

select * from information_schema.`COLUMNS` where TABLE_SCHEMA='庫名字' and tables='表名字'

三、修改庫字符集和排序規則
-- 修改庫的排序規則和字符集
ALTER database '庫名' DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
四、修改表和字段字符集以及排序規則
1、查詢並生成修改語句
-- 1、查看需要修改字符集和排序規則的表
SELECT
TABLE_SCHEMA AS '數據庫',
TABLE_NAME AS '表',
TABLE_COLLATION AS '原排序規則',
CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS '修正SQL'
FROM
information_schema.`TABLES`
WHERE
TABLE_COLLATION ='utf8mb4_0900_ai_ci' AND TABLE_SCHEMA = '庫名字';


-- 2、查看需要修改字符集和排序規則的字段
SELECT
TABLE_SCHEMA AS '數據庫',
TABLE_NAME AS '表',
COLUMN_NAME AS '字段',
CHARACTER_SET_NAME AS '原字符集',
COLLATION_NAME AS '原排序規則',
CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' MODIFY COLUMN `', COLUMN_NAME, '` ', COLUMN_TYPE, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS '修正SQL'
FROM
information_schema.`COLUMNS`
WHERE
CHARACTER_SET_NAME = 'utf8mb4' AND COLLATION_NAME != 'utf8mb4_general_ci' AND TABLE_SCHEMA = '庫名字';

2、生成簡潔的修改表以及字段字符集和排序規則的語句
-- 1、生成修改表 的字符集和排序規則的SQL語句

SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS '修正SQL'
FROM
information_schema.`TABLES`
WHERE
TABLE_COLLATION ='utf8mb4_0900_ai_ci' AND TABLE_SCHEMA = '庫名字';


-- 2、生成修改字段 的字符集和排序規則的SQL語句
SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' MODIFY COLUMN `', COLUMN_NAME, '` ', COLUMN_TYPE, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS '修正SQL'
FROM
information_schema.`COLUMNS`
WHERE
CHARACTER_SET_NAME = 'utf8mb4' AND COLLATION_NAME != 'utf8mb4_general_ci' AND TABLE_SCHEMA = '庫名字';

文章知識
————————————————
版權聲明:本文爲CSDN博主「@土豆」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_44770684/article/details/127006877

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章