是否可以从--all-databases mysqldump导入单个数据库?我想我可以手动修改文件,但想知道是否有任何命令行选项可以执行此操作。
我正在移动服务器,并拥有许多数据库,目前我目前不需要或不希望使用其中的大多数数据库,但是如果需要,可以选择还原单个数据库。
Answers:
mysqldump
输出只是一组SQL
语句。
您可以在命令行中提供所需的数据库,并使用以下命令针对其他数据库跳过命令:
mysql -D mydatabase -o mydatabase < dump.sql
这只会mydatabase
在使用时执行命令
mysqldump --all-databases
,则mysqldump输出将包含DROP DATABASE IF EXISTS dbname; CREATE DATABASE dbname; USE dbname;
MySQL实例中每个数据库的内容,包括mysql模式。请查看mysqldump文档:dev.mysql.com/doc/refman/5.5/en/…。这意味着每个数据库都会被无情地覆盖。您能否提供证明,它将跳过所有数据库,只有一个?注意:您可以使用mysqlbinlog对二进制日志执行此操作。
您可以使用以下命令:
mysql -u root -p --one-database destdbname < alldatabases.sql
destdbname
您要还原的所需数据库在哪里。
恕我直言,另一种更为安全的选择是从--all-databases
转储中提取数据库。例:
sed -n '/^-- Current Database: `dbname`/,/^-- Current Database: `/p' alldatabases.sql > output.sql
替换dbname
为所需的数据库名称。alldatabases.sql
是sql-dump文件的名称。这样,您将拥有单独的数据库文件,然后可以使用简单的mysql命令进行还原。
(版权归:Darren Mothersele-参见他的页面)
--one-database
吗?