样例库 test
用户名 root
目的 将mysql test库中所有不是innodb引擎的表修改成innodb引擎
解答:
mysql -u root --column-names=false -s -e "show table status from test where \`Engine\` <> 'InnoDB'"|awk '{print "mysql -u root test \"alter table "$1" engine=innodb;\"";}'|bash
注意:为了避免列名的问题,官方建议用`符号(数字1左边的键)引用列名。
分析:
1.|取得所有引擎不为innodb的表
mysql -u root --column-names=false -s -e "show table status from test where Engine <> 'InnoDB'"
注意点:大小写,使用--column-names=false -s参数,避免显示表头和表格线。
2.使用awk取出第一列表名,并拼接
注意点双引号的转义字符\"
3.放入shell执行。
第二种方法:
mysql -u root -e "show table status from test where Engine <> 'InnoDB'\G"|grep Name|awk '{print "mysql -u root test \"alter table "$2" engine=innodb;\"";}'|bash
使用\G参数来回避column-names=false -s参数。
阅读(1357) | 评论(0) | 转发(0) |