2011-07-20 41 views

回答

7

只是共享的解決方案之一:

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> source /tmp/a.txt;

14

我用了一個和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; 
+0

+1我同意場景 –

+0

謝謝你 - 沒有group_concat_max_len的增加,Angelin的回答將永遠不會適用於我的場景。 –

+0

+1不使用文件n變量n取消分配 –

3

沒有錯誤的風險簡單的解決方案:

mysqldump創建一個包含文件DROP命令狀

DROP TABLE IF EXISTS `wp_matable`; 

一個 'grep'「 DROP TABLE wp_「給我們執行命令

所以下降是由論文trhee線(您可以編輯的drop.sql檢查哪些表會被前下降)

mysqldump -u user -p database > dump.sql 
grep "DROP TABLE `wp_" dump.sql > drop.sql 
mysql -u user -p database < drop.sql 
0

對於大mysqldump的解決方案,最好使用--skip-引號名

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部分不會在反引號的某些環境中工作。

1

小心 「_」,必須以 「\」 之前在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**%'; 
-1

進入C:\ XAMPP的\ mysql的\ DATA \文件夾

選擇多要刪除,然後按表刪除按鈕

感謝

+1

這使得原始海報使用XAMPP並將其安裝到該目錄的假設。 –

相關問題