【发布时间】:2011-04-05 12:24:32
【问题描述】:
我有一个包含 5 个数据库的 mysql 转储,想知道是否有办法只导入其中一个(使用 mysqldump 或其他)。
建议表示赞赏。
【问题讨论】:
-
我认为没有。导入所有数据库并删除除您想要保留的数据库之外的所有数据库,这是我认为您能做的最好的事情 - 但您永远不知道,也许有人想出了一些东西
标签: mysql database import mysqldump restore
我有一个包含 5 个数据库的 mysql 转储,想知道是否有办法只导入其中一个(使用 mysqldump 或其他)。
建议表示赞赏。
【问题讨论】:
标签: mysql database import mysqldump restore
您可以使用 mysql 命令行 --one-database 选项。
mysql> mysql -u root -p --one-database YOURDBNAME < YOURFILE.SQL
当你这样做时当然要小心。
您也可以使用mysql dumpsplitter。
【讨论】:
您可以通过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