mysql 批量修改字符集

1.修改表字段字符集

语句:

ALTER TABLE {table_name} CHANGE {field} {field} {field_type} CHARACTER SET {character_name} [other_attribute];

导出 sql:

SELECT CONCAT('ALTER TABLE `',TABLE_SCHEMA,'`.`',TABLE_NAME,'` CHANGE `',column_name,'` `',
 column_name,'` ',
 COLUMN_TYPE,
 ' CHARSET utf8mb4 COLLATE utf8mb4_general_ci ',IF(IS_NULLABLE = 'NO', 'NOT NULL', 'NULL'),
 ' ',
 IF(ISNULL(COLUMN_DEFAULT), '', CONCAT('default \'', COLUMN_DEFAULT, "'")),
 ';') AS sqltext
FROM `information_schema`.`COLUMNS` WHERE table_schema = '数据库'
AND (CHARACTER_SET_NAME = 'utf8'
OR COLLATION_NAME = 'utf8mb4_0900_ai_ci'
or COLLATION_NAME = 'utf8mb4_unicode_ci');

2.修改表字符集

语句:

ALTER TABLE {table_name} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

搜索数据库表 sql:

SELECT TABLE_NAME from information_schema.`TABLES` WHERE TABLE_SCHEMA = '数据库';

导出 sql:

SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;')
from information_schema.`TABLES` WHERE TABLE_SCHEMA = '数据库';

3.修改表引擎

语句:

ALTER TABLE {table_name} ENGINE=InnoDB;

搜索数据库表 sql:

SELECT TABLE_NAME,
 ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA =  '数据库' AND ENGINE = 'myISAM';

导出 sql:

SELECT CONCAT('ALTER TABLE ',TABLE_NAME,' ENGINE=InnoDB;')
from information_schema.`TABLES` WHERE TABLE_SCHEMA = '数据库' AND ENGINE = 'myISAM';
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容