如何从命令行删除所有 MySQL 表?

如何从命令行删除所有 MySQL 表?

通常我打开 Terminal.app 并连接到远程 MySQL 数据库。

然后我使用此命令删除一个表:

mysql> drop table [table name];

但我需要的是命令行来删除数据库中的所有表。

如果我使用:

mysql> drop database [database name];

我将彻底破坏数据库,并且无法再次创建表。对吗?

答案1

您可以删除数据库然后立即重新创建它:

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

或者您可以使用脚本删除数据库中的每个表。

答案2

您可以尝试以下命令:

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

或者:

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

DB_NAME您的数据库名称在哪里。您可以在命令中指定~/.my.cnf或将其添加到命令中(例如-uroot -proot)。

如果您的数据库用户没有权限删除数据库,则此方法比删除并创建数据库有一些优势。

答案3

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

相关内容