2011-07-20 11 views

Odpowiedz

7

Wystarczy dzielić jedno z rozwiązań:

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

Użyłem zapytania bardzo podobnego do zapytania Angelina. Jeśli masz więcej niż kilka tabel, musisz zwiększyć maksymalną długość group_concat. W przeciwnym razie zapytanie będzie barf na obcięty ciąg, który zwraca group_concat.

To moje 10 centów:

-- 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 Zgadzam się ze scenariuszem –

+0

Dziękuję za to - bez wzrostu group_concat_max_len, odpowiedź Angelina nigdy by nie zadziałała w moim scenariuszu. –

+0

+1 dla nieużywania zmiennej n pliku n deallocating –

3

Proste rozwiązanie bez ryzyka błędu:

mysqldump stworzyć plik zawierający DROP komenda jak

DROP TABLE IF EXISTS `wp_matable`; 

a 'grep' z " DROP TABLE wp_ "podaj nam polecenia do wykonania

więc spadek jest przez linie tezy trhee (można edytować drop.sql aby sprawdzić, które tabele byłyby spadła przed)

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

Dla doskonałym rozwiązaniem mysqldump lepiej jest użyć opcji --skip-cytując nazw

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 

pozbyć backticks w nazwach tabel. Część grep nie będzie działać w niektórych środowiskach z backtickami.

1

Bądź ostrożny z "_", muszą być pisane z "\" przed MySQL jak:

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

idź do C: \ xampp \ mysql \ data \ folder

zaznaczyć kilka tabele, które chcesz usunąć, a następnie naciśnij przycisk usuń

Dzięki

+1

To powoduje, że oryginalny plakat używa XAMPP i jest zainstalowany w tym katalogu. –

Powiązane problemy