在线批量修改mysql中表结构

1、获取要修改的表的表名称
登录mysql库,查询出所有表

show tables;

将需要修改表结构的表名称存放到b.txt文件中
2、执行修改
修改表引擎为InnoDB

for i in `cat b.txt`;do /usr/local/percona-toolkit/bin/pt-online-schema-change --user=root --password=123456 --host=localhost --charset=utf8 --alter="ENGINE=InnoDB" D=test_new,t=$i --execute;done 

3、验证表结构是否修改

show create table tablename;

  

注意:1、需要避开业务高峰。
2、需要提前安装percona-toolkit
下载地址 https://www.percona.com/downloads/percona-toolkit/LATEST/

原文地址:https://www.cnblogs.com/xzlive/p/10773387.html

时间: 2024-08-30 02:06:29

在线批量修改mysql中表结构的相关文章

phpMyAdmin批量修改Mysql数据表前缀的方法

多个网站共用一个Mysql数据库时,为使数据库管理不混乱,一般采用不同的网站使用不同前缀名的方式进行区分.而如何批量修改已有数据库的前缀名 呢?全部导出修改后再导入?还是一个表一个表的修改?今天我要介绍的是相对简单的批量修改数据库中表前缀的方法,适用于修改数据库中相同前缀且数据表较多 的情况. 此例中假定修改名为“www_sdck_cn”的数据库中前缀为“phpcms_”的表,并将所有符合条件表的前缀修改为“sdck_”. 1.        用phpMyAdmin打开要修改前缀的数据库www_

生产环境批量修改mysql引擎

生产环境中如何批量修改MySQL引擎 一般来说这样的需求并不多见,但是偶尔也会有,在这里我们推荐使用sed对备份的内容进行引擎转换的方式,当然了,不要忘记修改my.cnf使之支持并能高效的使用对于的引用. 方法1 mysql命令语句修改 创建后引擎更改,5.0版本之后 alter table lvnian engine=innodb; alter table lvnian engine=MyISAM; 其中lvnian是表名 更改实例 ##############################

批量修改mysql数据库表前缀。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

批量修改mysql表、表、数据库的字符校对规则

记录一个在工作中遇到的问题,也不算是问题,为的是找一种简便的方法批量修改数据表字段的排序规则,在MySQL中叫collation,常常和编码CHARACTER一起出现的.collation有三种级别,分辨是数据库级别,数据表级别和字段级别. 1.The database level 2.The table level 3.The column level https://confluence.atlassian.com/display/CONFKB/How+to+Fix+the+Collatio

如何批量修改mysql表的引擎

工作需要,要将所有的mysql表的引擎改为innodb 执行如下SQL SET @DATABASE_NAME = 'name_of_your_db';SELECT  CONCAT('ALTER TABLE `', table_name, '` ENGINE=InnoDB;') AS sql_statementsFROM    information_schema.tables AS tbWHERE   table_schema = @DATABASE_NAMEAND     `ENGINE` =

批量修改Mysql数据库表Innodb为MyISAN

mysql -uroot -e "SELECT concat('ALTER TABLE ', TABLE_NAME,' ENGINE=MYISAM;') FROM Information_schema.TABLES WHERE TABLE_SCHEMA = 'jitamin2' AND ENGINE = 'InnoDB' AND TABLE_TYPE = 'BASE TABLE'"

批量修改mysql数据库中某一列的值

今天做数据库合并时,发现由于之前的操作失误,导致两个库的自增最开始都没改,都是默认从1开始自增,导致数据库合并时报主键冲突. 补救方法: 在不影响程序 数据的情况下修改这个列 在现有值得基础上加上之前没有加的自增.具体命令如下: update t_game_role_beastSoul set PKId = PKId + 770000000; update t_game_role_beastSoul set PKId = PKId + 740000000;

批量修改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'; 将

批量修改mysql 备注

SELECTconcat("ALTER TABLE ",TABLE_SCHEMA,".",TABLE_NAME," CHANGE ",COLUMN_NAME," ",COLUMN_NAME," ",COLUMN_TYPE, IF ( COLUMN_DEFAULT IS NULL, " ", concat( " DEFAULT ", IF ( COLUMN_DEFAUL