基本思想是在数据库中运行“显示表”,并使用从中获得的结果来选择所需的表。我认为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”。该命令的输出通过下一条命令通过管道传递(|符号表示“ piped”,如传递的一样):
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”命令时要当心!