How do I restore one database from a mysqldump containing multiple databases?
You can pipe the dumped SQL through sed
and have it extract the database for you. Something like:
cat mysqldumped.sql | \
sed -n -e '/^CREATE DATABASE.*`the_database_you_want`/,/^CREATE DATABASE/ p' | \
sed -e '$d' | \
mysql
The two sed
commands:
- Only print the lines matching between the
CREATE DATABASE
lines (including bothCREATE DATABASE
lines), and - Delete the last
CREATE DATABASE
line from the output since we don't want mysqld to create a second database.
If your dump does not contain the CREATE DATABASE
lines, you can also match against the USE
lines.
You can use the mysql command line --one-database option.
mysql> mysql -u root -p --one-database YOURDBNAME < YOURFILE.SQL
Of course be careful when you do this.
You can also use a mysql dumpsplitter.