我有大约 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/