免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2259 | 回复: 4
打印 上一主题 下一主题

shell脚本操作mysql [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-25 13:07 |只看该作者 |倒序浏览
有一个数据库,里面的表有如下形式:
table_a;
table_b_20090403;
table_b_20090629;

请问如何写shell脚本来删除带日期后缀,且是半个月以前的表?

我不熟悉shell和mysql,之前不是做这方面开发的。急用,大家帮帮忙,给个例子!
谢谢!!!!

论坛徽章:
0
2 [报告]
发表于 2009-06-25 16:02 |只看该作者
提供一个清空以 wc 开头的表的例子:

mysqlshow -ppassword thrash > ./tables.txt
cat tables.txt | grep wc | awk '{print $2}' > ./tables.txt
cat ./tables.txt | while read line
do
mysql -ppassword thrash -e "truncate table $line"
done
rm -f ./tables.txt

论坛徽章:
0
3 [报告]
发表于 2009-06-25 19:26 |只看该作者
不很清楚你的日期后缀如何定义
这里姑且以包含2009为例:

#!/bin/bash
DATE_15_DAYS_BEFORE=`date -d '15 days ago' +%Y%m%d`
echo "show tables" | mysql test | awk '
{
        if((idx=match($0,"2009"))!=0)
        {
                if(substr($0,idx) < comparedays)
                        printf("echo \"drop table "$0 "\" | mysql test ") | "/bin/bash"
        }
}' comparedays=${DATE_15_DAYS_BEFORE}

论坛徽章:
0
4 [报告]
发表于 2009-06-25 20:13 |只看该作者

回复 #3 kaidu 的帖子

就是创建的表名带有日期后缀,比如 atable_20090506, atable_20090615,假如今天(20090625)执行脚本,那么日期后缀为20090610之前的日期的表要被删除。

论坛徽章:
0
5 [报告]
发表于 2009-06-25 20:30 |只看该作者
我给你的脚本可以实现这样的需求,你试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP