mysqldump 仅转储具有特定前缀的数据库

标签 mysql sql database

我有大约 100 个不同的数据库,我想用 mysqldump 转储那些以前缀“asd_”开头的数据库

我试过了,但没用:

mysqldump -u[user] -p[pwd] -h [server.url] asd_* --single-transaction > backup.sql

我也试过:

mysqldump -u[user] -p[pwd] -h [server.url] "SHOW DATABASES LIKE 'asd_%'" --single-transaction > backup.sql

但两者都不起作用。

感谢您的帮助。

最佳答案

单独的 mysqldump 不支持表或数据库的通配符。

您必须在一个单独的步骤中生成数据库列表,然后在 mysqldump 命令中使用它。您可以像这样在子命令中组合此步骤:

mysqldump ...options... --databases `mysql -B -N -e "SHOW DATABASES LIKE 'asd\_%'"`

请注意,我必须反斜杠 _ 字符,因为它是 LIKE 的元字符。

我还必须使用 --databases 选项,否则第二个和后续数据库名称将被解释为第一个数据库中的表名称。那是因为 mysqldump 的用法是以下之一:

Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

关于mysqldump 仅转储具有特定前缀的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26408716/

相关文章:

mySQL 两个表的总和

php - Mysql根据时间戳循环遍历数据库?

javascript - 更改表中选定的选项

mysql - MySQL中的相交

mysql - 带有嵌入式选择查询的 MySQL 触发器中的死锁

java - 使用 Java SE 应用程序封装一个简单的数据库

php - SQLSTATE[HY000] : General error: 1364 Field 'uID' doesn't have a default value

php - 对于每个post变量插入到mysql数据库

使用 AND 和 OR 的 mysql 查询 where 子句

php - 使用 xampp 安装 Apache 时出错