对于sql语句,总有点不得劲的感觉,习惯性用 shell 去批量处理数据库的事情。
下面是工作中撰写的几个小脚本:
删除 某些databases CHARBASE 表中 level 小于等于20 的数据
```
#!/bin/bash
a=(sanguo_50003 sanguo_50001 sanguo_50002 sanguo_40009 sanguo_50004 sanguo_30019 sanguo_20040 sanguo_20041 sanguo_10201 sanguo_10202 sanguo_10203 sanguo_10204);
for i in ${a[@]};
do
mysql -uxxx -pxxxx -hxxxx $i <<EOF
DELETE FROM CHARBASE WHERE LEVEL <= 20;
EOF
done
```
删除 sanguo_xxxxx_log库中 带日期的表
```
#!/bin/bash
for i in {40001..40009};
do
database=sanguo_"$i"_log ;
tables=`mysql -uxxx -pxxxx -hxxxx $database -e "show tables ;" | grep 2018 ;`
echo "正在进行删除 $database 里的表";
for j in ${tables[@]};
do
mysql -uxxxx -pxxxx -hxxxx $database <<EOF
DROP table $j ;
EOF
done
done
```
批量备份databases
```
#!/bin/bash
a=( sanguo_50003 sanguo_50001 sanguo_50002 sanguo_40009 sanguo_50004 sanguo_30019 sanguo_20040 sanguo_20041 sanguo_10201 sanguo_10202 sanguo_10203 sanguo_10204 );
for i in ${a[@]};
do
echo -e "$i\n" ;
mysqldump -uxx -pxxx -hxxxx $i > $i.sql
done
```
网友评论