基本思想是在您的数据库中运行“显示表”,并使用其中的结果来选择
你想要的表。我不认为 MySQL 让你对“显示表”的结果集做任何事情,
但我可能错了。
这是一个使用 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”命令时要小心!