shell脚本批量修改mysql表引擎

版权声明: https://blog.csdn.net/wojiuwangla/article/details/83418375

进入到mysql的数据目录,例如/data

#进入到data目录,如果不进入打绝对路径会带着/data/表名

cd /data

#列出所有表的数据结构文件,然后去掉.frm,追加到文件中就是所有的表名了

ls *.frm |awk -F'.frm' '{print $1}' > /root/all_tables.txt
 

当然,你也可以用另一种方式,直接从数据库复制粘贴

/usr/local/mysql/bin/mysql -uroot -p'password' -e "use dbname;show tables" > all_tables.txt

#声明是shell脚本

#!/bin/bash

#列出所有表名
a=`cat /root/all_tables.txt`

#循环每一个表名
for i in $a

#开始循环
do

#获取当前表的引擎名称
engine_name=`/usr/local/webserver/mysql/bin/mysql -uroot -p'password' -e "use phpcmsdata;show create table $i;"|grep 'ENGINE'|awk -F'=' '{print $2}'|awk '{print $1}'`

#输出当前表的引擎名称
echo $engine_name

#判断,如果当前表的引擎名称是MyISAM
if [[ $engine_name == 'MyISAM' ]];then

#输出修改引擎中
   echo "modifying engine....."

#将表引擎修改为InnoDB
   /usr/local/webserver/mysql/bin/mysql -uroot -p'password' -e "use phpcmsdata;ALTER TABLE $i ENGINE = InnoDB;"
 #修改完之后输出成功  
   echo "success...."

#若当前表引擎不是MYISAM
else

#输出当前表是innodb
   echo "$i  is innodb...." 

#结束判断
fi

#完成循环
done
 

猜你喜欢

转载自blog.csdn.net/wojiuwangla/article/details/83418375
今日推荐