14

我想轻松删除多个表,而无需在删除查询中实际列出表名,并且要删除的表具有前缀“wp_”

4

8 回答 8

15

我使用了一个与 Angelin 非常相似的查询。如果您有多个表,则必须增加group_concat. 否则,查询将拒绝group_concat返回的截断字符串。

这是我的 10 美分:

-- Increase memory to avoid truncating string, adjust according to your needs
SET group_concat_max_len = 1024 * 1024 * 10;
-- Generate drop command and assign to variable
SELECT CONCAT('DROP TABLE ',GROUP_CONCAT(CONCAT(table_schema,'.',table_name)),';') INTO @dropcmd FROM information_schema.tables WHERE table_schema='databasename' AND table_name LIKE 'my_table%';
-- Drop tables
PREPARE str FROM @dropcmd; EXECUTE str; DEALLOCATE PREPARE str;
于 2012-10-16T05:09:56.777 回答
8

只分享一个解决方案:

mysql> SELECT CONCAT("DROP TABLE",
GROUP_CONCAT(TABLE_NAME)) AS stmt

FROM information_schema.TABLES

WHERE TABLE_SCHEMA = "your_db_name" AND TABLE_NAME LIKE "ur condition" into outfile '/tmp/a.txt';

mysql>源/tmp/a.txt;

于 2011-07-20T07:48:24.893 回答
4

没有错误风险的简单解决方案:

mysqldump创建一个包含DROP类似命令的文件

DROP TABLE IF EXISTS `wp_matable`;

带有“”的' grep'DROP TABLE wp_给我们执行的命令

所以 drop 是由这些三行进行的(您可以编辑 drop.sql 以检查之前会删除哪些表)

mysqldump -u user -p database > dump.sql 
grep "DROP TABLE `wp_" dump.sql > drop.sql
mysql -u user -p database < drop.sql
于 2014-01-13T08:57:29.873 回答
2

注意“_”,在Mysql之前需要写“\”如:

SELECT CONCAT('DROP TABLE',GROUP_CONCAT(CONCAT(table_schema,'.',table_name)),';') INTO @dropcmd FROM information_schema.tables WHERE table_schema='databasename' AND table_name LIKE '**my\\_table**%';
于 2016-03-07T17:02:19.437 回答
0

对于出色的 mysqldump 解决方案,最好使用选项 --skip-quote-names

mysqldump --skip-quote-names -u user -p database > dump.sql 
grep "DROP TABLE wp_" dump.sql > drop.sql
mysql -u user -p database < drop.sql

你摆脱了表名中的反引号。grep 部分在某些带有反引号的环境中不起作用。

于 2015-10-12T15:52:09.850 回答
0

当需要删除大量表时,一个不太复杂的解决方案 -

SELECT GROUP_CONCAT(table_name SEPARATOR ", ")
    -> AS tables
    -> FROM information_schema.tables
    -> WHERE table_schema = "my_database_name"
    -> AND table_name LIKE "wp_%";
+-------------------------------------------------------------------------
| tables              
+-------------------------------------------------------------------------
| wp_t1, wp_t2, wp_t3, wp_t4, wp_t5, wp_t6, wp_t7, wp_t7, wp_ .......... 
+-------------------------------------------------------------------------

复制表名。然后使用 -

DROP TABLE 
    -> wp_t1, wp_t2, wp_t3, wp_t4, wp_t5, wp_t6, wp_t7, wp_t7, wp_ ..........;
于 2021-10-04T19:14:19.003 回答
-3

转到 c:\xampp\mysql\data\your 文件夹

选择要删除的多个表,然后按删除按钮

谢谢

于 2016-07-18T13:18:56.440 回答
-4

在 mysql 中删除单个表:

删除表 TABLE_NAME;

于 2015-09-02T03:23:25.450 回答