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

2013年7月19日 | 标签: , | 点击: 6522 次

mysql批量删除数据库中相同表前缀的数据表,以下以cxy_的前缀为例。

使用sql语句和命令:
如果不限制或指定数据库可以用下面这段sql语句

SELECT CONCAT('drop table ',TABLE_SCHEMA,'.',TABLE_NAME,';') into OUTFILE 'c:/drop.sql' FROM information_schema.TABLES WHERE TABLE_NAME LIKE 'cxy_%';

如果指定限制数据库如cxy_db,将上一句的TABLE_SCHEMA改为’cxy_db’即可,即

SELECT CONCAT('drop table ','cxy_db','.',TABLE_NAME,';') into OUTFILE 'c:/drop.sql' FROM information_schema.TABLES WHERE TABLE_NAME LIKE 'cxy_%';

这里是将查询结果语句导出至C盘的drop.sql文件中,接下来你需要通过mysql控制台执行

source c:/drop.sql;

或者通过dos控制台命令执行

mysql -u你的mysql用户名 -p你的mysql密码 <c:/drop.sql

mysql -uroot -proot <c:/drop.sql

 

使用PHP语言:

以下为示例

<?php
$dbhost = 'localhost';	        //数据库服务器
$dbuser = 'root';		//数据库用户名
$dbpw	= 'root';		//数据库密码
$dbname = 'cxy_db';		//选用的数据库名
$delpre = 'cxy_';		//需要删除数据表的表前缀

$link = mysql_connect($dbhost,$dbuser,$dbpw) or die('连接mysql数据库失败!');
if (mysql_get_server_info($link) > '4.1'){
	//使用UTF8存取数据库 需要mysql 4.1.0以上支持
	mysql_query("SET character_set_connection=utf-8,character_set_results=utf-8,character_set_client=binary",$link);
}
mysql_select_db($dbname,$link) or die('数据库'.$dbname.'不存在!');
$rs = mysql_query("show tables",$link);
while($arr = mysql_fetch_array($rs)){
	if (strpos($arr[0], $delpre) === 0){
		$re = mysql_query("DROP table {$arr[0]}",$link);
		if ($re){
			echo '成功删除数据表:'.$arr[0].'<br/>';
		}
	}
}




  1. 2013年7月24日13:17

    太高深了,不过对于有需要的朋友却是极好的!

  2. 2013年7月20日11:48

    留个脚印

返回顶部