今天帮一朋友备份数据库,发现下载下来的sql竟然高达50M!震精啊
回头看了一样phpmyadmin首页才发现,他这里面躺了900多条表单╮(╯▽╰)╭
好吧,删除多余表单……900多条记录,一个个的去点前面的方框框的时候才发现这种情况下这样做也是一件“很卡的事~”
由于这些都是之前安装的Discuz!、UCHome、PHP168等程序,所以所有表单都会有它们自己的统一的前缀,这种情况下该我们的SQL兄去操作明显会快捷的多。
(下面以Discuz!7.2论坛为例)
首先选择好正确的数据库,然后点击“SQL”标签并执行如下语句:
SELECT CONCAT('drop table',table_name,';')
FROM information_schema.tables
where information_schema.tables.TABLE_NAME LIKE 'cdb_%';
(“ cdb_ ”即为要删除的表的前缀,自己酌情修改)
在新页面中会发现有一长串诸如 DROP TABLE cdb_………这样的语句,不用管了,全部复制下来
然后再回到SQL页面,将这里复制的内容粘贴进去,执行!
至此,你会发现所有以“cdb_”为前缀的表单都被删除掉了
当然,这只是在phpmyadmin这样可以执行SQL的环境中进行的
下面还有个方法可以实现批量删除(网络搜集结果,未测试)
将下方的代码复制出来并保存为php文档,修改好相关内容后上传至网站空间执行即可
<?php
$server = "localhost";
$mydb = " "; //数据库名
$user = " "; //用户名
$pass = " "; //密码
$link = mysql_connect($server, $user, $pass);
$db = mysql_select_db($mydb, $link);
$result = mysql_query("show tables");
$tables = array();
while($row = mysql_fetch_row($result)) {
if(strpos($row[0], 'cdb_') === 0) //"cdb_"即为表前缀,根据自己的实际情况修改
$tables[] = $row[0];
}
mysql_free_result($result);
print_r($tables);
$sql = 'DROP TABLES '.join(',', $tables);
echo $sql."\n";
if(mysql_query($sql)) {
echo "删除成功\n";
} else {
echo "删除失败\n";
}
mysql_close($link);
?>
这样操作或许不是最方便的,只是今天遇到这个问题的时候是使用这个方法解决掉的,权当自己备份存底了O(∩_∩)O~
Filed under 乱七八糟. Tags: phpmyadmin, sql, sql批量删除, 相同前缀


博主请问能换友情链接吗?
@AB先生, 不好意思今天才看见你的留言。
关于友情链接的问题我暂时没有打算再添加呢,主要是链接样式还没来得及修改,抱歉啊。。
@Gorgons, DZ系列产品的话,discuz!论坛是“cdb_”,UCenter Home貌似是“home_”(很久没摸,记不大清楚了),UCenter是“uc_”,现在的DiscuzX是“pre_”。。。当然,这些在安装的时候都是可以更改的。
怎么看不懂?看样子应该多学习