web-dev-qa-db-ja.com

コマンドラインからすべてのMySQLテーブルを削除する方法は?

通常、Terminal.appを開いて、リモートのMySQLデータベースに接続します。

次に、このコマンドを使用してテーブルを削除します。

mysql> drop table [table name];

しかし、必要なのは、データベース内のすべてのテーブルを削除するコマンドラインです。

私が使用する場合:

mysql> drop database [database name];

データベースを完全に破棄し、テーブルを再度作成することはできません。私は正しいですか?

29
chefnelone

データベースを削除して、すぐに再作成できます。

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

または、スクリプトを使用してデータベース内の各テーブルを削除できます。

28
William Jackson

次のコマンドを試すことができます。

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)。

この方法には、データベースユーザーがデータベースを削除する権限を持っていない場合に備えて、データベースを削除して作成するよりもいくつかの利点があります。

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; SET FOREIGN_KEY_CHECKS = 1;' | mysql -u USERHERE -pPASSWORDHERE -v DATABASENAMEHERE

2
sveilleux2