mysql批量删除相同前缀表名的数据表

使用php代码:

<?php
mysql_connect(”,”,”);
mysql_select_db(”);
$rs=mysql_query(‘show tables’);

while($arr=mysql_fetch_array($rs)){
    $TF=strpos($arr[0],’class_’);
    if($TF===0){
        $FT=mysql_query(“drop table $arr[0]”);
        if($FT){
            echo “$arr[0] 删除成功!<br>”;
            }
        }
    }

?>

<?php
$hostname =’localhost’;
$userid = ‘username’;
$password = ‘password’;
$dbname = ‘dbname’;
$connect = mysql_connect($hostname,$userid,$password);
mysql_select_db($dbname);
$result = mysql_query(“show table status from $dbname”,$connect);
while($data=mysql_fetch_array($result)) {
mysql_query(“drop table $data[Name]”);
}
?>

通过phpmyadmin批量删除

一、先说一下简单的批量删除特定前缀(其实有特定字符串的都可以)的表:

1、在phpmyadmin中运行如下sql命令:

Select CONCAT( ‘drop table ‘, table_name, ‘;’ )
FROM information_schema.tables
Where table_name LIKE ‘cdb_%’;

说明:information_schema是系统数据库,这个数据库里有一个叫table的表,表里的内容是当前登录用户权限内可以看见的所有数据库的表名,一个表名占一行。CONCAT是连接字符串。上面语句的作用是生成一批删除指定前缀(cdb_)的表的sql语句。类似:
drop table cdb_aaa;
drop table cdb_bbb;

2、复制上面的内容,进入需要删除表的数据库,粘帖到sql运行框内,执行。
注意,在产生批量删除的sql语句的时候,可能有些字符显示不下(表名太长)。点击该页面的“选项”,里面勾选“完整文字”即可。

二、批量修改表名

1、在phpmyadmin中运行如下sql命令:

Select CONCAT( ‘ALTER TABLE ‘, table_name, ‘ RENAME TO ‘, table_name,‘;’ )
FROM information_schema.tables
Where table_name LIKE ‘cdb_%’;

得到结果:
ALTER TABLE cdb_aaa RENAME TO cdb_aaa;
ALTER TABLE cdb_bbb RENAME TO cdb_bbb;

2、复制上面的结果到记事本,寻找RENAME TO cdb批量替换成RENAME TO pre(将cdb前缀改成pre前缀)
3、再复制记事本的内容,粘帖到phpmyadmin的sql运行框内,执行。

ps:上面的方法说方便也不是太方便,如果要改的表少的话还是手工改快一点。

此条目发表在数据库分类目录,贴了, 标签。将固定链接加入收藏夹。

发表回复