Linux / MySQL · 2016/09/26 1

MySQL批量删除指定多前缀表的方法

由于业务需要,有的时候我们需要按天建立数据表来记录数据,那么数据过期后还在积压浪费磁盘空间,那么我们就需要进行批量清理。这里我只想讲下我需要的批量删除多个前缀类别的表的方法。

关于单前缀表的方法的大家可以参考以下两篇文章

mysql批量删除指定前缀或后缀表

MySQL批量删除指定前缀表的方法

下面直接贴上我的代码,大家可以按照自己实际情况修改

#!/bin/bash
table_arr=("a" "b" "c" "d") #所要删除的表前缀数组(不含日期)
database="abcd" #所要删除的表所在的库
user="root" #数据库账号
password="password" #数据库密码
rule="_201608"  #所要删除的表前缀的日期特征规则
for table_pre in ${table_arr[@]}   
do
        drop_table=`mysql -u${user} -p${password} -e "SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' ) AS statement FR
OM information_schema.tables WHERE table_schema = '${database}' AND table_name LIKE '${table_pre}${rule}%';"| grep -v statement`
        echo ${drop_table}  #打印单前缀表删除的sql语句
        mysql -u${user} -p${password} -e "use ${database};${drop_table}" #执行删除命令
done

===============华丽的分隔线===================

附上2017/11/23的升级版
MySQL批量删除多库指定多前缀表的方法【升级版】