首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除名称与模式匹配的多个数据库

删除名称与模式匹配的多个数据库
EN

Stack Overflow用户
提问于 2011-03-28 17:51:43
回答 10查看 34.9K关注 0票数 25

我想删除所有以单词开头的数据库。

代码语言:javascript
复制
abc
xyz
cms_db1
cms_db2
cms_xyz
pqr

在上面给出的例子中,我想删除所有以单词"cms“开头的数据库。我猜maatkit或shell脚本可以做到这一点。最好的方法是什么?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-03-28 18:14:35

Linux方式:

代码语言:javascript
复制
#!/bin/bash

DB_STARTS_WITH="cms"
MUSER="root"
MPWD="yourpass"
MYSQL="mysql"

DBS="$($MYSQL -u$MUSER -p$MPWD -Bse 'show databases')"
for db in $DBS; do

if [[ "$db" =~ "^${DB_STARTS_WITH}" ]]; then
    echo "Deleting $db"
    $MYSQL -u$MUSER -p$MPWD -Bse "drop database $db"
fi

done

当然,使用drop部分的风险自负;)

票数 9
EN

Stack Overflow用户

发布于 2014-05-27 17:45:50

下面是一个包含两个查询的纯mySQL解决方案:

代码语言:javascript
复制
SELECT CONCAT('DROP DATABASE `', SCHEMA_NAME, '`;')
FROM `information_schema`.`SCHEMATA`
WHERE SCHEMA_NAME LIKE 'cms_%';

然后复制并粘贴结果记录集并运行

票数 82
EN

Stack Overflow用户

发布于 2013-02-14 19:58:47

我不得不改进neurinos脚本,因为我的密码中有特殊字符,遗漏了'drop DATABASE ...‘和DB_STARTS_WITH表达式的非工作比较。以下脚本在Ubuntu服务器上有效:

代码语言:javascript
复制
#!/bin/bash

DB_STARTS_WITH="grp"
MUSER="root"
MPWD="YOUR_PASSWORD"
MYSQL="mysql"

DBS="$($MYSQL -u $MUSER -p"$MPWD" -Bse 'show databases')"
for db in $DBS; do

if [[ "$db" == $DB_STARTS_WITH* ]]; then
    echo "Deleting $db"
    $MYSQL -u $MUSER -p"$MPWD" -Bse "drop database $db"
fi

done
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5457286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档