2011-07-20 81 views
10

quiero soltar múltiples tablas con facilidad sin tener que lista los nombres de tabla en la consulta de la gota y las tablas que desea borrar tiene prefijo decir 'wp_'MySQL: ¿cómo eliminar varias tablas con una sola consulta?

+1

se puede saber por qué el voto -ve –

+0

pregunta similar - http://stackoverflow.com/questions/4958424/mysql-question-on-dropping- mesas/54301 04 # 5430104 – Devart

Respuesta

7

Sólo compartir una de las soluciones:

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

He usado una consulta muy similar a la de Angelin. En caso de que tenga más de unas pocas tablas, debe aumentar la longitud máxima de group_concat. De lo contrario, la consulta se eliminará en la cadena truncada que devuelve group_concat.

Ésta es mis 10 centavos:

-- 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 Estoy de acuerdo con el escenario –

+0

Gracias por esto, sin el aumento de group_concat_max_len, la respuesta de Angelin nunca habría funcionado para mi escenario. –

+0

+1 por no usar el archivo n variable n desasignación –

3

Solución sencilla y sin riesgo de error:

mysqldump crear un archivo que contiene DROP comando como

DROP TABLE IF EXISTS `wp_matable`; 

un 'grep' con " DROP TABLE wp_ "nos da los comandos para ejecutar

modo gota se hace por líneas tesis trhee (se puede editar DROP.SQL para comprobar qué tablas se cayeron antes)

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

Para la gran solución mysqldump Es mejor utilizar la opción --skip-quote-nombres

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 

a deshacerse de acentos abiertos en los nombres de tabla. La parte grep no funcionará en algunos entornos con los backticks.

1

que tener cuidado con "_", necesitan ser escrito con "\" antes en MySQL como:

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

vaya a C: \ xampp \ mysql \ data \ carpeta

Selección múltiple tablas que desea eliminar y pulse el botón eliminar

Gracias

+1

Esto supone que el póster original está usando XAMPP y lo tiene instalado en ese directorio. –

Cuestiones relacionadas