2011-07-20 14 views

Trả lời

7

Chỉ cần chia sẻ một trong những giải pháp:

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

Tôi đã sử dụng một truy vấn rất giống với Angelin. Trong trường hợp bạn có nhiều hơn một vài bảng, một bảng phải tăng độ dài tối đa là group_concat. Nếu không, truy vấn sẽ chặn trên chuỗi bị cắt bớt mà trả về group_concat.

Đây là 10 tôi cent:

-- 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 Tôi đồng ý với kịch bản –

+0

Cảm ơn bạn vì điều này - không có sự gia tăng group_concat_max_len, câu trả lời của Angelin sẽ không bao giờ có tác dụng đối với kịch bản của tôi. –

+0

+1 không sử dụng tệp n biến n deallocating –

3

giải pháp đơn giản mà không có nguy cơ lỗi:

mysqldump tạo ra một tập tin có chứa DROP lệnh như

DROP TABLE IF EXISTS `wp_matable`; 

một 'grep' với " DROP TABLE wp_ "cung cấp cho chúng tôi các lệnh để thực thi

để thả được thực hiện bởi dây chuyền luận trhee (bạn có thể chỉnh sửa drop.sql để kiểm tra bảng sẽ bị loại bỏ trước)

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

Đối với giải pháp mysqldump lớn nó tốt hơn để sử dụng tùy chọn --skip-quote-tên

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 

Bạn thoát khỏi backticks trong tên bảng. Phần grep sẽ không hoạt động trong một số môi trường với backticks.

1

Hãy cẩn thận với "_", cần phải được viết với "\" trước đây trong Mysql như:

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

Đến c: \ xampp \ mysql \ data \ thư mục của bạn

Chọn nhiều bảng mà bạn muốn loại bỏ và sau đó nhấn nút xóa

Cảm ơn

+1

Điều này làm cho giả định rằng áp phích ban đầu đang sử dụng XAMPP và đã cài đặt nó vào thư mục đó. –