批量修改Mysql數據庫表MyISAM爲InnoDB


網上有這樣一個方法:

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...


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章