+
80
-

mysql如何批量更改数据库及表字段的字符集?

mysql如何批量更改数据库及表字段的字符集?


网友回复

+
0
-

假设我们要修改数据库名为dataBaseName下所有表及表字段的字符集编码,那么sql如下:

一、修改所有表中的varchar和char字段以及排序集(dataBaseName修改为库名)

SELECT
    CONCAT(
        'ALTER TABLE `',
        TABLE_NAME,
        '` MODIFY `',
        COLUMN_NAME,
        '` ',
        DATA_TYPE,
        '(',
        CHARACTER_MAXIMUM_LENGTH,
        ') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci',
        (
            CASE
            WHEN IS_NULLABLE = 'NO' THEN
                ' NOT NULL'
            ELSE
                ''
            END
        ),
        ';'
    )
FROM
    information_schema. COLUMNS
WHERE
    TABLE_SCHEMA = 'dataBaseName'
AND (DATA_TYPE = 'varchar' OR DATA_TYPE = 'char')

执行完后将结果复制出来再执行一次sql

二、修改所有表的编码及排序集(dataBaseName修改为库名)

SELECT
    CONCAT(
        'ALTER TABLE ',
        TABLE_NAME,
        ' CONVERT TO CHARACTER SET utf8mb4;'
    )
FROM
    information_schema. TABLES
WHERE
    TABLE_SCHEMA = 'dataBaseName';

执行完后将结果复制出来再执行一次sql
我知道答案,我要回答