2

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?

6
  • Can manual rewriting the database name be an option? Commented Nov 13, 2012 at 9:24
  • Unfortunately that SQL dump is very big and I have no possibilities to modify it.
    – Mich Dart
    Commented Nov 13, 2012 at 9:26
  • 3
    Which operating system are you running on? If it's a unix variant, then a tool like sed should have no problems replacing allUSE db1 statements with USE db2 ones (might take a while, but it'll do it). Commented Nov 13, 2012 at 10:53
  • Even on Windows you can use a grep replacement for updating that file. See this SO question.
    – Marian
    Commented Nov 13, 2012 at 11:42
  • @Marian sed for Windows Commented Nov 13, 2012 at 13:44

2 Answers 2

4

By reading the official documentation, I'll say that your guess is right, the dump script will override the DB1 database.

MySQL Use db syntax

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.

2

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.