Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Datenbanken löschen, die mit einem Platzhalter übereinstimmen?

Die Grundidee besteht darin, "Tabellen anzeigen" in Ihrer Datenbank auszuführen und die Ergebnisse daraus zu verwenden, um die gewünschten Tabellen auszuwählen. Ich glaube nicht, dass MySQL Sie etwas mit der Ergebnismenge von "show tables" machen lässt, aber ich liege wahrscheinlich falsch.

Hier ist eine Quick-and-Dirty-Lösung mit der 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 @@"

Dadurch werden alle Shell-Befehle ausgegeben, um die Tabellen zu löschen, die mit "Whatever_" beginnen. Wenn Sie möchten, dass diese Befehle tatsächlich ausgeführt werden, entfernen Sie das Wort "echo".

BEARBEITEN :Ich habe vergessen, das oben zu erklären! Ich weiß nicht, wie vertraut Sie mit Shell-Scripting sind, aber hier ist:

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

druckt eine Liste aller Ihrer Tabellen mit dem Header "Tables_in_your_database_name". Die Ausgabe davon wird durch den nächsten Befehl geleitet (das |-Symbol bedeutet "durchgeleitet", wie in weitergegeben) durch den nächsten Befehl:

egrep "^Whatever_"

sucht nach Zeilen, die mit dem Wort "Whatever_" beginnen (das ^-Symbol bedeutet "Wesen mit") und gibt nur diese aus. Schließlich leiten wir diese Liste von „Whatever_*“-Tabellen durch den Befehl:

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

die jede Zeile in der Liste der Tabellennamen nimmt und sie anstelle des "@@" in den Befehl einfügt

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

Wenn Sie also mehrere Tabellen mit den Namen "Whatever_1", "Whatever_2", "Whatever_3" hätten, wären die generierten Befehle:

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"

Was Folgendes ausgeben würde:

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"

Ich hoffe, das war ausführlich genug und ich schlage niemandem einfach mit zu vielen Informationen eins über den Kopf. Viel Glück und seien Sie vorsichtig, wenn Sie den "DROP TABLE"-Befehl verwenden!