Descarte em massa das tabelas do mysql

1

Existe uma aplicação que me permitirá descartar várias tabelas mysql de uma só vez? Eu tenho um banco de dados que tem 363 tabelas nele. E a maioria deles não é necessária. Levaria muito tempo se eu fizesse isso no phpmyadmin, já que você só pode derrubar uma tabela de cada vez + a mensagem de confirmação.

    
por Wern Ancheta 11.06.2011 / 13:36

3 respostas

4

Se o usuário com o qual você está se conectando ao banco de dados tiver "DROP TABLES" permitido, você poderá fazê-lo com uma consulta ...

DROP TABLE table1, table2, table3, etc, etc, etc;

Confira Mysql soltando várias tabelas para uma boa descrição de como para fazer isso usando ferramentas de linha de comando (se você puder se conectar ao servidor via SSH).

    
por 11.06.2011 / 14:05
3

Para qualquer outra pessoa na mesma situação, com milhares de tabelas a cair, como instâncias wordpress compartilhando um banco de dados, então isso vai fazer o trabalho rapidamente, mas use muito cuidado. Não vai perdoar!

Execute primeiro com force = 0 para mostrar o que seria descartado, dependendo do filtro do grep, e mude para 1 para realmente fazer:

#!/bin/bash
# drop tables matching filter
force=0;
u=root;
p=password;
db=dbname;
filter=users_;
for t in $(mysql -u $u -p$p -D $db -Bse 'show tables' | grep $filter); do
    echo Dropping $t;
    [[ $force -eq 1 ]] && mysql -u root -p$p -D $db -Bse "drop table \'$t\'"
done
    
por 26.07.2011 / 21:31
2

Use a linha de comando do mysql.

Se todas as tabelas que precisam ser descartadas compartilharem um prefixo comum como ("phpbb_", use este comando:

SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' ) 
    AS statement FROM information_schema.tables 
    WHERE table_name LIKE 'phpbb_%';

Isso gera o comando SQL que precisa ser executado para se livrar deles.

    
por 04.09.2014 / 00:19

Tags