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

Vil du droppe MySQL-databaser, der matcher et eller andet jokertegn?

Den grundlæggende idé er at køre "vis tabeller" i din database, og bruge resultaterne derfra til at vælge de tabeller, du ønsker. Jeg tror ikke, at MySQL lader dig gøre noget med resultatsættet fra "vis tabeller", men jeg tager sikkert fejl.

Her er en hurtig og beskidt løsning ved hjælp af skallen:

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 vil udskrive alle shell-kommandoer for at droppe tabellerne, der begynder med "Whatever_". Hvis du ønsker, at den rent faktisk skal udføre disse kommandoer, skal du fjerne ordet "ekko".

REDIGER :Jeg glemte at forklare ovenstående! Jeg ved ikke, hvor fortrolig du er med shell-scripting, men her kommer:

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

udskriver en liste over alle dine tabeller med overskriften "Tables_in_your_database_name". Outputtet fra det sendes (symbolet | betyder "piped", som i givet videre) gennem den næste kommando:

egrep "^Whatever_"

søger efter alle linjer, der begynder (at ^ symboler betyder "væsener med") ordet "Whatever_" og udskriver kun dem. Til sidst sender vi listen over "Whatever_*"-tabeller gennem kommandoen:

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

som tager hver linje i listen over tabelnavne og indsætter den i stedet for "@@" i kommandoen

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

Så hvis du havde en masse tabeller med navnet "Whatever_1", "Whatever_2", "Whatever_3", ville de genererede kommandoer være:

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"

Hvilket ville udsende følgende:

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"

Jeg håber, det var nok detaljer, og at jeg ikke bare slår nogen oven i hovedet med for meget information. Held og lykke, og vær forsigtig, når du bruger kommandoen "DROP TABLE"!



  1. En guide til Pgpool til PostgreSQL:del 1

  2. Sådan erstatter du Djangos primære nøgle med et andet heltal, der er unikt for den tabel

  3. MySQLd starter ikke efter brygopgradering fra 5.6 til 5.7

  4. Bedste DBaaS-løsninger til PostgreSQL