批量修改Mysql数据库表MyISAM为InnoDB

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

网上有这样一个方法:

1.查看当前数据引擎的命令:

  show engines;

2.

    USE `[DBNAME]`;

    SELECT GROUP_CONCAT(CONCAT( 'ALTER TABLE ' ,TABLE_NAME ,' ENGINE=InnoDB; ') SEPARATOR '' )

    FROM information_schema.TABLES AS t

    WHERE TABLE_SCHEMA = '[DBNAME]' AND TABLE_TYPE = 'BASE TABLE';

  将其中的红色部分替换为你所使用的数据库

   执行后其实生成的是查询命令,然后copy生产的命令,执行SQL 即可:

ALTER TABLE info_aaaa ENGINE=InnoDB; ALTER TABLE info_data_bbb ENGINE=InnoDB; ALTER TABLE info_data_ccc ENGINE=InnoDB; ALTER TABLE info_data_ddd ENGINE=InnoDB; ALTER TABLE info_data_eee ENGINE=InnoDB; ALTER TABLE info_data_fffENGINE=InnoDB;


再次查看数据表的数据引擎已经更改了:show table status from [DBNAME];


但是,生成的命令,只有一小部分,可能表太多了吧。


那就用下面这一句,在查询里,贴如下命令,将生成


SELECT concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;') FROM Information_schema.TABLES WHERE TABLE_SCHEMA = 'jingzong' AND ENGINE = 'MYISAM' AND TABLE_TYPE = 'BASE TABLE'


生成的语句是:


CREATE TABLE MY_TABLE (
  `concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')` VARCHAR
);
INSERT INTO MY_TABLE(`concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')`) VALUES ('ALTER TABLE jz_admin ENGINE=InnoDB;');
INSERT INTO MY_TABLE(`concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')`) VALUES ('ALTER TABLE jz_admin_panel ENGINE=InnoDB;');
INSERT INTO MY_TABLE(`concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')`) VALUES ('ALTER TABLE jz_admin_role ENGINE=InnoDB;');
INSERT INTO MY_TABLE(`concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')`) VALUES ('ALTER TABLE jz_admin_role_priv ENGINE=InnoDB;');
INSERT INTO MY_TABLE(`concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')`) VALUES ('ALTER TABLE jz_announce ENGINE=InnoDB;');
INSERT INTO MY_TABLE(`concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')`) VALUES ('ALTER TABLE jz_attachment ENGINE=InnoDB;');
INSERT INTO MY_TABLE(`concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')`) VALUES ('ALTER TABLE jz_attachment_index ENGINE=InnoDB;');
INSERT INTO MY_TABLE(`concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')`) VALUES ('ALTER TABLE jz_badword ENGINE=InnoDB;');


全部语句是有了,但这一段,不好使用,

手动建一个文件,把没有用的去掉,批量查询...替换为'',  

留下:ALTER TABLE jz_admin ENGINE=InnoDB;

这样的。

然后再贴到查询里,执行一遍就可以了。



----------  招募未来大神 -----------------------

如果您有利他之心,乐于帮助他人,乐于分享
如果您遇到php问题,百度且问了其他群之后仍没得到解答

欢迎加入,PHP技术问答群,QQ群:292626152

教学相长!帮助他人,自己也会得到提升!

为了珍惜每个人的宝贵时间,请大家不要闲聊!

愿我们互相帮助,共同进步!

加入时留言暗号,php,ajax,thinkphp,yii...



     本文转自phpervip 51CTO博客,原文链接:http://blog.51cto.com/phpervip/1954734,如需转载请自行联系原作者


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Oracle 关系型数据库 MySQL
【mysql】—— 表的内连和外连
【mysql】—— 表的内连和外连
|
1月前
|
存储 关系型数据库 MySQL
【mysql】—— 表的增删改查
【mysql】—— 表的增删改查
|
1月前
|
存储 关系型数据库 MySQL
MySQL InnoDB数据存储结构
MySQL InnoDB数据存储结构
|
1月前
|
存储 缓存 关系型数据库
MySQL的varchar水真的太深了——InnoDB记录存储结构
varchar(M) 能存多少个字符,为什么提示最大16383?innodb怎么知道varchar真正有多长?记录为NULL,innodb如何处理?某个列数据占用的字节数非常多怎么办?影响每行实际可用空间的因素有哪些?本篇围绕innodb默认行格式dynamic来说说原理。
828 6
MySQL的varchar水真的太深了——InnoDB记录存储结构
|
16天前
|
存储 SQL 关系型数据库
【MySQL】4. 表的操作
【MySQL】4. 表的操作
19 0
|
7天前
|
存储 关系型数据库 MySQL
MySQL引擎对决:深入解析MyISAM和InnoDB的区别
MySQL引擎对决:深入解析MyISAM和InnoDB的区别
21 0
|
15天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
|
15天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
15天前
|
缓存 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
|
16天前
|
关系型数据库 MySQL
【MySQL】12. 表的内连和外连(重点)
【MySQL】12. 表的内连和外连(重点)
12 0