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. 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. 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.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.