09 Feb, 2008
How-To: Alle oder bestimmte Tabellen einer Datenbank löschen
Posted by: Fritz Thomas In: Overall
Alle Tabellen löschen
Will man alle Tabellen einer Datenbank löschen so gibt es dafür keine native SQL Anweisung wie TRUNCATE DATABASE oder so. Man kann sich mit einem one-liner behelfen:
mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]
Mittels mysqldump wird die Datenbank ohne Daten und mit der Option ‘–add-drop-table’ gedumped. Mit grep werden dann nur diese Anweisungen wieder an den mysql Client weitergeleitet der dann wiederum die alle Tabellen aus der Datenbank dropt.
Nur bestimmte Tabellen einer Datenbank löschen
Oft hat man auch das Problem das man nur bestimmte Tabellen aus einer Datenbank löschen möchte. Zum Beispiel wenn man mehrere Applikationen installiert und eine davon jetzt löschen möchte. Wichtig ist das die Tabellen der Applikation einen Tabellen Prefix haben. Bei Wordpress wäre das zum Beispiel ‘wp_’ als Prefix. Um nur diese aus der Datenbank zu löschen muss die obere Anweisung nur mit einem weiteren grep erweitert werden:
mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | grep 'wp_.*' | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]
Es empfiehlt sich das Ergebnis zuerst mal zu kontrollieren und sich die Drop Statements nur ausgeben zu lassen - also den letzten Teil (mysql -u[USERNAME]…..) einfach weglassen.









