sql >> Database >  >> RDS >> Mysql

Drop MySQL-databases die overeenkomen met een wildcard?

Het basisidee is om "tabellen weergeven" in uw database uit te voeren en de resultaten daarvan te gebruiken om de gewenste tabellen te selecteren. Ik denk niet dat MySQL je iets laat doen met de resultatenset van "tabellen weergeven", maar ik heb het waarschijnlijk mis.

Hier is een snelle en vuile oplossing met behulp van de 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 @@"

Dat zal alle shell-commando's afdrukken om de tabellen te laten vallen die beginnen met "Whatever_". Als je wilt dat het die commando's daadwerkelijk uitvoert, verwijder dan het woord "echo".

BEWERKEN :Ik ben het bovenstaande vergeten uit te leggen! Ik weet niet hoe bekend je bent met shellscripting, maar hier komt:

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

drukt een lijst af van al uw tabellen, met de kop "Tables_in_your_database_name". De uitvoer daarvan wordt doorgesluisd (het | symbool betekent "doorgesluisd", zoals in doorgegeven) via het volgende commando:

egrep "^Whatever_"

zoekt naar alle regels die beginnen (die ^ symbolen betekent "wezens met") het woord "Whatever_" en drukt alleen die af. Ten slotte sturen we die lijst met "Whatever_*"-tabellen door het commando:

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

die elke regel in de lijst met tabelnamen neemt en deze invoegt in plaats van de "@@" in de opdracht

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

Dus als je een aantal tabellen had met de naam "Whatever_1", "Whatever_2", "Whatever_3", zouden de gegenereerde commando's zijn:

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"

Wat het volgende zou opleveren:

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"

Ik hoop dat dit genoeg detail was, en dat ik niet zomaar iemand over het hoofd sla met te veel informatie. Veel succes en wees voorzichtig bij het gebruik van de opdracht "DROP TABLE"!



  1. De 3 belangrijkste kenmerken van big data begrijpen

  2. Gelijktijdige gebruikerssessies beperken voor een specifieke login in SQL Server

  3. Hoe de gematerialiseerde weergave in Oracle te vernieuwen

  4. Dump sql-bestand naar ClearDB in Heroku