MYSQL如何批量删除相同前缀表?

最近再操作一些数据库的表时候,一些冗余的数据表,需要删除,但是删除表比较多,但是他们都相同的前缀,那怎样一键删除所有的(批量删除)呢?

下面写了两种办法进行处理

一、命令批量删除(需要列出所有要删除的表)

drop table `test_table1`,`test_table2`,`table3`
二、用程序(PHP)写一个小工具(一键搞定)
<html><head><title>MYSQL批量删除相同前缀的表</title></head>
<body>
<h2 style="text-align:center">MYSQL批量删除相同前缀的表</h2>
<br><br>
<form id="form1" name="form1" method="post" action="">
<table width="500" border="0" align="center" >
    <td width="110">ip地址</td>
    <td width="500" height="26"><label>
      <input name="ip" type="text" id="ip" value="localhost" />
    </label></td>
  </tr>
  <tr>
    <td height="25">数据库账号</td>
    <td height="26"><label>
      <input type="text" name="user" id="user" />
    </label></td>
  </tr>
  <tr>
    <td>数据库密码</td>
    <td height="26"><label>
      <input type="text" name="pwd" id="pwd" />
    </label></td>
  </tr>
  <tr>
    <td>数据库</td>
    <td height="26"><label>
      <input type="text" name="dbname" id="dbname" />
    </label></td>
  </tr>
  <tr>
    <td>删除前缀</td>
    <td height="26">    <label>
      <input type="text" name="pre" id="pre" />
     (例如:apoyl_)</td>
  </tr>
    <tr>
    <td height="67" colspan="2" align="center">    <label>
      <input type="submit" name="apoyl" id="apoyl" value="删除" n />
  </label><a href=http://www.keysou.com/?p=871 target="_blank" >帮助</a></td>
    </tr>

</table>
</form>
</body>
</html>
<?php
    /*  author:萧萧一风    
    /*  email: 77368447@qq.com    
    /*  url  : https://www.keysou.com/
    */
if($_POST['keysou']){
  //参数获取及过滤
 $params=array();
   foreach($_POST as $k=>$v){
    if(in_array($k,array('ip','user','pwd','dbname','pre'))){
  $params[$k]=addslashes(trim($v));
  if(empty($params[$k])){
     echo '参数为空!';
     exit;
   }
    }
   }
  //连接数据库
  $conn=@mysql_connect($params['ip'],$params['user'],$params['pwd']) or die('数据连接失败');
  mysql_select_db($params['dbname'],$conn);
  //获取该数据所有表
  $rs=mysql_query('show tables',$conn);
  while($arr=mysql_fetch_array($rs)){
   //判断是否为该前缀的表
      $flag=strpos($arr[0],$params['pre']);
   if($flag===0){
    $re=mysql_query('drop table    '.$arr[0],$conn);
     if($re){
          echo '<strong>'.$arr[0].'</strong> 删除成功!<br/>';
         }else{

      echo '<strong>'.$arr[0].'</strong><font color=red> 删除失败!</font><br/>';
      }
   }
  }
}
?>

结:第一种方式与第二区别 更麻烦需要写出所有的表名,而第二种方式,更为简单,

但是只能删除相同前缀的表名


作者头像
南宫俊逸创始人

君子好学,自强不息~

上一篇:Deprecated: Function set_magic_quotes_runtime() is deprecated 版本问题?
下一篇:gzip: stdin: not in gzip format 解决办法(tar: Error exit delayed from previous errors)

发表评论

阿里云2021年 618 年中钜惠活动