MySQL 批量修改库、表、列的排序规则

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
    COLLATION_NAME RLIKE 'utf8';

utf8 是我demo的模糊匹配排序规则,这里需要替换为你数据库中需要替换的字段的排序规则,

utf8mb4设置的是替换的字符集,

utf8mb4_general_ci设置的是替换的排序规则,

下面是运行结果:

MySQL 批量修改库、表、列的排序规则

把修正SQL 复制出来直接运行即可,

ALTER TABLE scm_users.users MODIFY COLUMN password varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE scm_warehouse.contact MODIFY COLUMN address varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE scm_warehouse.contact MODIFY COLUMN country varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE scm_warehouse.contact MODIFY COLUMN postal_code varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;......

2.表修复

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 RLIKE 'utf8';

表修复只需要设置排序规则,字符集会自动设置到正确的标准,

下面是SQL跑出来的样例。

MySQL 批量修改库、表、列的排序规则

把修正SQL 复制出来直接运行即可。

3.数据库修复

#修改数据库
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 RLIKE 'utf8';

下面是SQL跑出来的样例。

MySQL 批量修改库、表、列的排序规则

Original: https://www.cnblogs.com/JimmyThomas/p/16348977.html
Author: JimmyThomas
Title: MySQL 批量修改库、表、列的排序规则

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582504/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球