I have an SQL dump of db1 that contains this line:
"USE db1"
If I import that file into db2 with:
mysql -D db2 -uroot -p < /var/backups/db1.sql.gz
Is there the risk that db1 will be overriden?
By reading the official documentation, I'll say that your guess is right, the dump script will override the DB1 database.
The USE db_name statement tells MySQL to use the db_name database as the default (current) database for subsequent statements. The database remains the default until the end of the session or another USE statement is issued.
The solution is the one proposed by Stuart, use a grep-like tool to find and replace "use db1" with "use db2" inside the dump file. Maybe even other references to db1 inside the dump script (procedures that use complete table names..). There are solutions for both Linux or Windows variants to edit that big text file.
Aside from using sed
to remove the USE db1
statement, if you can take a new dump of the database:
mysqldump db1 > newdump.sql
should generate the dump without the USE db1
statement.
USE db1
statements withUSE db2
ones (might take a while, but it'll do it).