工作中有遇到,需要批量操作一些sql语句的地方。
比如,让我把一个库的表结构导出来。
mysql有命令支持这个功能:
mysqldump --opt -d xxxxx -uxxxx -pxxxx > /opt/chargegateway.sql
但是工作中的数据库对这个指令支持不是很好。
so使用脚本批量执行了show create table
这里只要是想记录下需要使用<<EOF语法
< <用法
当shell看到< <的时候,它就会知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行),再返回到主调Shell。
这个分界符可以是你所定义的任何字符串,一般标准用EOF,用别的字符串也是同样功效。
所以在脚本里可以< <和EOF配合使用,处理那些需要先进入命令行下,再输入命令的脚本操作。比如,先连接mysql,在执行一系列批量的建表,导出表的语句操作。
#!/bin/sh
for line in `cat tablefile`
do
echo $line
mysql -hxx.xx.xx.xx -P3306 -uxxxx -p8650b9d5E8 -Dxxxx <<EOF
show create table $line\G;
exit
EOF
done
执行脚本从tablefile文件中读出所有表,循环执行,导出建表语句。