Mysql
 sql >> Database >  >> RDS >> Mysql

Eliminare i database MySQL corrispondenti a qualche carattere jolly?

L'idea di base è eseguire "mostra tabelle" nel database e utilizzare i risultati per selezionare le tabelle desiderate. Non penso che MySQL ti permetta di fare qualcosa con il set di risultati di "mostra tabelle", ma probabilmente mi sbaglio.

Ecco una soluzione rapida e sporca utilizzando la 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 @@"

Ciò stamperà tutti i comandi della shell per eliminare le tabelle che iniziano con "Qualunque cosa_". Se vuoi che esegua effettivamente quei comandi, rimuovi la parola "echo".

MODIFICA :Ho dimenticato di spiegare quanto sopra! Non so quanto tu abbia familiarità con gli script di shell, ma ecco qui:

mysql -u your_user -D your_database_name -e "show tables" -s

stampa un elenco di tutte le tue tabelle, con l'intestazione "Tables_in_your_database_name". L'output viene inviato tramite pipe (il simbolo | significa "convogliato", come in passato) tramite il comando successivo:

egrep "^Whatever_"

cerca tutte le righe che iniziano (che ^ simboli significa "esseri con") la parola "Qualunque cosa_" e stampa solo quelle. Infine, eseguiamo l'elenco di tabelle "Qualunque_*" tramite il comando:

xargs -I "@@" echo mysql -u your_user -D your_database_name -e "DROP TABLE @@"

che prende ogni riga nell'elenco dei nomi delle tabelle e la inserisce al posto della "@@" nel comando

echo mysql -u your_user -D your_database_name -e "DROP TABLE @@"

Quindi, se avessi un gruppo di tabelle denominate "Qualunque_1", "Qualunque_2", "Qualunque_3", i comandi generati sarebbero:

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"

Che genererebbe quanto segue:

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"

Spero di essere stato abbastanza dettagliato e di non picchiare nessuno in testa con troppe informazioni. Buona fortuna e fai attenzione quando usi il comando "DROP TABLE"!