Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Soltar bancos de dados MySQL que correspondem a algum curinga?


A idéia básica é executar "show tables" em seu banco de dados e usar os resultados para selecionar as tabelas desejadas. Eu não acho que o MySQL permite que você faça qualquer coisa com o conjunto de resultados de "show tables", mas provavelmente estou errado.

Aqui está uma solução rápida e suja usando o shell:
mysql -u your_user -D your_database_name -e "show tables" -s | 
  egrep "^Whatever_" | 
  xargs -I "@@" echo mysql -u your_user -D your_database_name -e "DROP TABLE @@"

Isso imprimirá todos os comandos do shell para descartar as tabelas começando com "Whatever_". Se você quiser que ele realmente execute esses comandos, remova a palavra "echo".

EDITAR :eu esqueci de explicar o acima! Não sei se você está familiarizado com scripts de shell, mas aqui vai:
mysql -u your_user -D your_database_name -e "show tables" -s

imprime uma lista de todas as suas tabelas, com o cabeçalho "Tables_in_your_database_name". A saída disso é canalizada (o símbolo | significa "encaminhado", como em repassado) através do próximo comando:
egrep "^Whatever_"

procura por quaisquer linhas que comecem (os símbolos ^ significam "seres com") a palavra "Whatever_" e imprime apenas essas. Por fim, canalizamos essa lista de tabelas "Whatever_*" por meio do comando:
xargs -I "@@" echo mysql -u your_user -D your_database_name -e "DROP TABLE @@"

que pega cada linha na lista de nomes de tabelas e a insere em vez do "@@" no comando
echo mysql -u your_user -D your_database_name -e "DROP TABLE @@"

Então, se você tivesse um monte de tabelas chamadas "Whatever_1", "Whatever_2", "Whatever_3", os comandos gerados seriam:
echo mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_1"
echo mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_2"
echo mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_3"

O que geraria o seguinte:
mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_1"
mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_2"
mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_3"

Espero que tenha sido detalhe suficiente, e que eu não esteja apenas batendo na cabeça de ninguém com muita informação. Boa sorte e cuidado ao usar o comando "DROP TABLE"!