自己写脚本删除也可以。 貌似没见过可以用SQL语句进行批量删表的。脚本: echo "select concat('drop table ', table_name ,';') from TABLES where TABLE_SCHEMA ='wap' and table_name like 'cdb2_%' ;" | mysql information_schema | sed -n '2,$p' | mysql wap脚本解析: 如:我要删除的表: drop table cdb2_XXXX; drop table cdb2_XXXX; drop table cdb2_XXXX; drop table cdb2_XXXX; drop table cdb2_XXXX; 。 1.information_schema数据库是MySQL的信息库,用于管理MySQL其他数据库中表,存储过程,索引等的定义和状态的,其中TABLES表是用来描述表结构信息的。 2.利用concat来构造sql语句。3.sed -n '2,$p' 的作用是跳过第一行。因为echo "select ..." | mysql information_schema会带一个头,利用sed跳过一行,从第二行开始输出。4.把输出的sql语句传递回mysql wap,这样就会针对于wap数据库逐条执行drop table操作。
我是在phpmyadmin 中执行下面语句时 MySQL 返回: #1044 - Access denied for user 'latola'@'localhost' to database 'information_schema' DELETE FROM information_schema.tables WHERE table_name LIKE 'cdb2_%'
貌似没见过可以用SQL语句进行批量删表的。脚本:
echo "select concat('drop table ', table_name ,';') from TABLES where TABLE_SCHEMA ='wap' and table_name like 'cdb2_%' ;" | mysql information_schema | sed -n '2,$p' | mysql wap脚本解析:
如:我要删除的表:
drop table cdb2_XXXX;
drop table cdb2_XXXX;
drop table cdb2_XXXX;
drop table cdb2_XXXX;
drop table cdb2_XXXX;
。
1.information_schema数据库是MySQL的信息库,用于管理MySQL其他数据库中表,存储过程,索引等的定义和状态的,其中TABLES表是用来描述表结构信息的。
2.利用concat来构造sql语句。3.sed -n '2,$p' 的作用是跳过第一行。因为echo "select ..." | mysql information_schema会带一个头,利用sed跳过一行,从第二行开始输出。4.把输出的sql语句传递回mysql wap,这样就会针对于wap数据库逐条执行drop table操作。
MySQL 返回: #1044 - Access denied for user 'latola'@'localhost' to database 'information_schema'
DELETE FROM information_schema.tables
WHERE table_name LIKE 'cdb2_%'
1.用mysql_list_tables()函数配合mysql_tablename ()得到所有表名称(具体可参考手册)
2.遍历 上面表名称:对于每个表名称用函数substr()取前四个字符,比对前四个字符是否为'cdb2_'.如果是将该表名存入数组(比如$del_tablename_arr)
3.删除以$del_tablename_arr的元素为表名的所有表
//得到所有表名称
<?php
mysql_connect("localhost", "mysql_user", "mysql_password");
$result = mysql_list_tables("mydb"); for ($i = 0; $i < mysql_num_rows($result); $i++)
$del_tablename_arr[$i]=mysql_tablename($result, $i));
mysql_free_result($result);
?>