如何从包含多个数据库的mysqldump恢复一个数据库?
您可以通过sed
管道转储的SQL并让它为您提取数据库。类似:
cat mysqldumped.sql | \
sed -n -e '/^CREATE DATABASE.*`the_database_you_want`/,/^CREATE DATABASE/ p' | \
sed -e '$d' | \
mysql
两个sed
命令:
- 仅打印
CREATE DATABASE
线(包括CREATE DATABASE
线)之间的匹配线,和 - 删除从所述最后
CREATE DATABASE
线输出,因为我们不希望mysqld创建第二个数据库。
如果您的转储不包含CREATE DATABASE
行,则还可以匹配USE
行。
在一行中,使用'-u'和'-p'选项: 'cat all-databases.sql | sed -n -e'/^CREATE DATABASE。* \'the_database_you_want \'/,/^CREATE DATABASE/p'| sed -e'$ d'| mysql -u my_username -p“ – 2013-12-05 20:26:37
您可以使用mysql命令行--one-database选项。
当然,当你这样做的时候要小心。您可以使用mysql dumpsplitter。
我试过这个,但总是得到错误“ERROR 1049 (42000):未知数据库'redmine'“。该文档指出:“这对跳过对二进制日志中其他数据库的更新很有用。”这不是一个二进制日志(我认为),所以它不会工作。 – 2010-08-29 23:09:11
我发现了一个与此功能相关的有趣的错误报告:http://bugs.mysql.com/bug.php?id=40477 – 2010-08-29 23:16:40
@ThePixelDeveloper:一个空的数据库需要先存在,然后才能正常工作。 – 2012-09-12 12:20:45
我不认为有。导入所有的数据库,并删除除了你想保留的那一个以外的所有数据库是你能做的最好的事情 - 但你永远不知道,也许有人想出了一些东西 – 2010-08-29 20:22:30