大量删除 mysql 表

大量删除 mysql 表

有没有一个应用程序可以让我一次删除多个 mysql 表?我有一个数据库,上面有 363 个表。其中大多数都是不需要的。如果我在 phpmyadmin 中执行此操作,则会花费太长时间,因为您一次只能删除一个表 + 确认消息。

答案1

如果您连接到数据库的用户允许“DROP TABLES”,那么您可以通过查询来执行此操作...

DROP TABLE table1, table2, table3, etc, etc, etc;

查看Mysql删除多个表以获得有关如何使用命令行工具执行此操作的良好描述(如果您可以通过 SSH 连接到服务器)。

答案2

对于其他处于相同情况并需要删除数千个表的人,例如共享一个数据库的 wordpress 实例,这将快速完成工作,但要格外小心。它不会原谅!

首先使用 force=0 运行以显示根据 grep 过滤器将删除的内容,然后更改为 1 以实际执行:

#!/bin/bash
# drop tables matching filter
force=0;
u=root;
p=password;
db=dbname;
filter=users_;
for t in $(mysql -u $u -p$p -D $db -Bse 'show tables' | grep $filter); do
    echo Dropping $t;
    [[ $force -eq 1 ]] && mysql -u root -p$p -D $db -Bse "drop table \`$t\`"
done

答案3

使用 mysql 命令行。

如果所有需要删除的表都共享一个公共前缀(如“phpbb_”,请使用此命令:

SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' ) 
    AS statement FROM information_schema.tables 
    WHERE table_name LIKE 'phpbb_%';

这将生成需要运行的 SQL 命令来真正摆脱它们。

相关内容