gpt4 book ai didi

mysql - 删除与某些通配符匹配的 MySQL 数据库?

转载 作者:IT老高 更新时间:2023-10-28 12:55:53 25 4
gpt4 key购买 nike

我在需要删除大量数据库的服务器上运行 mySQL(经过对服务器的一些测试)。我需要删除的所有数据库都具有相同的前缀“Whatever_”。

在前缀之后,名称是随机的。所以你有你的whatever_something,whatever_232,whatever_blabla,....,whatever_imthelast。

我将多次从事这项工作,所以我想知道最好的方法是什么?

编辑:我可以使用任何类型的语言或插入 mysql ......所以我们可以通过某些方式做到这一点。现在,我要求生成数据库的人给我一个 .txt,每个名称都在一行中...所以我编写了一个快速 php,它将获取一个文件并删除其中的所有数据库,稍后我会尝试% 答案(如果它有效,它肯定会采用正确的答案,这是更简单的方法)。无论如何,我想以更简单的方式做到这一点,因为我无法支持此代码(其他人会,你知道...)

编辑 2:使用通配符不起作用:#1008 - Can't drop database 'whatever_%';数据库不存在

最佳答案

基本思想是在您的数据库中运行“显示表”,并使用其中的结果来选择你想要的表。我不认为 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”命令时要小心!

关于mysql - 删除与某些通配符匹配的 MySQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/456751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com