sql >> Databasteknik >  >> RDS >> Mysql

Släpp MySQL-databaser som matchar ett jokertecken?

Grundidén är att köra "visa tabeller" i din databas och använda resultaten från det för att välja de tabeller du vill ha. Jag tror inte att MySQL låter dig göra något med resultaten från "visa tabeller", men jag har förmodligen fel.

Här är en snabb och smutsig lösning med skalet:

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 @@"

Det kommer att skriva ut alla skalkommandon för att släppa tabellerna som börjar med "Whatever_". Om du vill att den verkligen ska köra dessa kommandon, ta bort ordet "echo".

REDIGERA :Jag glömde förklara ovanstående! Jag vet inte hur bekant du är med skalskript, men här kommer:

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

skriver ut en lista över alla dina tabeller, med rubriken "Tabell_i_din_databas_namn". Utdata från det skickas (symbolen | betyder "piped", som i vidarebefordrad) genom nästa kommando:

egrep "^Whatever_"

söker efter alla rader som börjar (att ^ symboler betyder "varelser med") ordet "Whatever_" och skriver bara ut dessa. Slutligen skickar vi listan med "Whatever_*"-tabeller genom kommandot:

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

som tar varje rad i listan med tabellnamn och infogar den istället för "@@" i kommandot

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

Så om du hade ett gäng tabeller med namnet "Whatever_1", "Whatever_2", "Whatever_3", skulle de genererade kommandona vara:

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"

Vilket skulle ge ut följande:

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"

Jag hoppas att det var tillräckligt med detaljer, och att jag inte bara slår någon över huvudet med för mycket information. Lycka till och var försiktig när du använder kommandot "DROP TABLE"!



  1. Hur man automatiserar migrering från fristående MySQL till Galera Cluster med Ansible

  2. Konstruera en datamodell för ett parkeringshanteringssystem

  3. connection.select_value returnerar endast strängar i postgres med pg gem

  4. Skapa ett index på en enorm MySQL-produktionstabell utan tabelllåsning