MySQL批量修改数据表的字符集及字段字符集

将批量生成的SQL语句再次执行即可


# 字段修改

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
    CHARACTER_SET_NAME != 'utf8' AND TABLE_SCHEMA = '数据库';

 

# 数据表修改

 

SELECT
    TABLE_SCHEMA '数据库',
    TABLE_NAME '',
    TABLE_COLLATION '原排序规则',
    CONCAT( 'ALTER TABLE ', TABLE_NAME, ' DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;' ) '修正SQL'
FROM
    information_schema.`TABLES` 
WHERE
    TABLE_COLLATION = 'utf8' AND TABLE_SCHEMA = '数据库';

 

ps: 上面的生成的修改字段语句不会保留字段默认值和字段注释, 需要自行修改语句 2020年5月8日 18:20:01

posted @ 2020-05-08 15:08  hwzzbe  阅读(2142)  评论(0编辑  收藏  举报