如何从包含多个数据库的mysqldump恢复一个数据库?

The*_*per 15 mysql database import restore mysqldump

我有一个带有5个数据库的mysql转储,并想知道是否有一种方法只导入其中一个(使用mysqldump或其他).

建议表示赞赏.

Tim*_*Tim 28

您可以使用mysql命令行--one-database选项.

mysql> mysql -u root -p --one-database YOURDBNAME < YOURFILE.SQL
Run Code Online (Sandbox Code Playgroud)

当你这样做时当然要小心.

您也可以使用mysql dumpsplitter.

  • 啊,我终于理解了@RuneKaagaard的意思:如果你想恢复"redmine"数据库,那么首先以root用户身份登录mysql并执行"CREATE DATABASE redmine".之后"--one database"命令开关将在之后工作. (2认同)
  • Oracle的文档提醒您不要使用此命令.它很容易导致意外结果.请参阅http://dev.mysql.com/doc/refman/5.6/en/mysql-command-options.html#option_mysql_one-database (2认同)

rjk*_*rjk 15

您可以通过管道转储SQL sed并让它为您提取数据库.就像是:

cat mysqldumped.sql | \
sed -n -e '/^CREATE DATABASE.*`the_database_you_want`/,/^CREATE DATABASE/ p' | \
sed -e '$d' | \
mysql
Run Code Online (Sandbox Code Playgroud)

这两个sed命令:

  1. 只打印行之间匹配的CREATE DATABASE行(包括两CREATE DATABASE行)和
  2. 从输出中删除最后 CREATE DATABASE一行,因为我们不希望mysqld创建第二个数据库.

如果您的转储不包含CREATE DATABASE行,您也可以匹配USE行.