有一个数据库,里面的表有如下形式:
table_a;
table_b_20090403;
table_b_20090629;
请问如何写shell脚本来删除带日期后缀,且是半个月以前的表?谢谢!!!!急!

解决方案 »

  1.   

    什么版本?如果是5以上,可以直接从系统表中取得所有表名,再用SP打开游标,动态生成SQL语句,(DROP TABLE),再运行
      

  2.   

    版本是:mysql  Ver 14.7 Distrib 4.1.7汗,我对shell和mysql都不是很熟悉,老板要我写的。。
      

  3.   

    #!/bin/sh
    vDB_NAME=""
    vDEL_DATE=`date -d "15 day ago" +"%Y%m%d"`
    mysql -uroot -Ne "show tables" ${vDB_NAME} >table.tmp.txtwhile read vTABLE
    do
        vTABLE_DATE=${vTABLE#[a-z]*_}
        if [ $vTABLE_DATE -lt vDEL_DATE ];then
            mysql -uroot -vvve "drop table ${vTABLE}" ${vDB_NAME}
        fi
    done < table.tmp.txt
    rm -f table.tmp.txt
      

  4.   

    这些表用的什么数据引擎?
    如果是MyISAM, 则非常简单,直接用shell 删除所有的 文件即可。这个脚本比较容易。如果是innodb, 稍微麻烦一点,应该你办法用存储过程实现,因为没有infomation schema,但同样只要通过SHELL脚本即可,比如楼上的。你的操作系统是什么?当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
    
      

  5.   

    linux 操作系统。多谢楼上各位,特别是4楼的兄弟,我晚上试试。谢谢