it-swarm.com.de

Wie lösche ich alle MySQL-Tabellen von der Kommandozeile?

Normalerweise öffne ich Terminal.app und verbinde mich mit einer entfernten MySQL-Datenbank.

Dann benutze ich diesen Befehl, um eine Tabelle zu löschen:

mysql> drop table [table name];

Aber was ich brauche, ist die Befehlszeile, um alle Tabellen in der Datenbank zu löschen.

Wenn ich benutze:

mysql> drop database [database name];

Ich werde die Datenbank komplett zerstören und keine Tabellen mehr erstellen können. Habe ich recht?

29
chefnelone

Sie können die Datenbank löschen und sofort neu erstellen:

mysql> drop database [database name];
mysql> create database [database name];

Oder Sie können ein Skript verwenden, um jede Tabelle in der Datenbank zu löschen.

27
William Jackson

Sie können den folgenden Befehl versuchen:

mysqldump --no-data --add-drop-table DB_NAME | grep ^DROP | mysql -v DB_NAME

Oder:

mysql --silent --skip-column-names -e "SHOW TABLES" DB_NAME | xargs -L1 -I% echo 'DROP TABLE `%`;' | mysql -v DB_NAME

Wobei DB_NAME Ihr Datenbankname ist. Datenbankanmeldeinformationen können Sie entweder in ~/.my.cnf angeben oder dem Befehl hinzufügen (z. B. -uroot -proot).

Diese Methode bietet einige Vorteile gegenüber dem Löschen und Erstellen der Datenbank, falls Ihr Datenbankbenutzer nicht berechtigt ist, die Datenbank zu löschen.

10
kenorb

mysql -u USERHERE -pPASSWORDHERE --silent --skip-column-names -e "SHOW TABLES" DATABASENAMEHERE | xargs -L1 -I% echo 'SET FOREIGN_KEY_CHECKS = 0; DROP TABLE% ;' | mysql -u USERHERE -pPASSWORDHERE -v DATABASENAMEHERE

2
sveilleux2