最基本的想法是在數據庫中運行「show tables」,並使用其中的結果來選擇你想要的 表。我不認爲MySQL可以讓你對「show tables」, 的結果集做任何事情,但我可能是錯的。
下面是使用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 @@"
這將打印出所有的shell命令來刪除與「Whatever_」開頭的表。如果您希望它實際執行這些命令,請刪除單詞「echo」。
編輯:我忘了解釋上述!我不知道你是怎麼熟悉shell腳本,但這裏有雲:
mysql -u your_user -D your_database_name -e "show tables" -s
打印出所有表的列表,與標題「Tables_in_your_database_name」。從該輸出通過管道(|符號的意思是「管道」,如在傳入上)至下一個命令:
egrep "^Whatever_"
搜索與開始的行(即^符號的意思是「像用」)的單詞「Whatever_」,只打印這些。最後,我們管道將通過命令「Whatever_ *」表列出:
xargs -I "@@" echo mysql -u your_user -D your_database_name -e "DROP TABLE @@"
這需要在表名的列表中的每一行,並在命令插入它,而不是「@@」
echo mysql -u your_user -D your_database_name -e "DROP TABLE @@"
所以,如果你有一堆名爲 「Whatever_1」, 「Whatever_2」, 「Whatever_3」 表,生成的命令是:
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"
這將輸出如下:
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"
我希望這是足夠的細節,而且我不只是在信息太多的情況下毆打任何人。祝你好運,使用「DROP TABLE」命令時要小心!
與我一樣,它不會在`-e`後輸出引號(```),它會輸出這樣的行:`mysql -u root -D joomla_test -e DROP TABLE bak_xlr1q_weblinks` using your exact bash script。I'm using Bash 4.1.5(1)-release。 – Hubro 2013-02-27 19:48:16
@Codemonkey爲了讓引號出現,你可以將它們轉義。用`\ DROP TABLE @@「替換` 「DROP TABLE @@ \」` – scraimer 2013-02-28 09:35:28