将包含CREATE DATABASE和USE的MySQL转储导入到自定义数据库

我收到一个巨大的数据库转储(21 GB),包括一个CREATE DATABASE和USE语句。

现在我想导入该转储 – 但是到一个不同的数据库。

这是转储的样子(我加的行号)

17: -- 18: -- Create schema foo 19: -- 20: 21: CREATE DATABASE IF NOT EXISTS foo; 22: USE foo; 23: 24: -- 

使用头部和尾部从转储中删除该部分

 head foodump.sql -n 16 > processed.sql tail foodump.sql -n +23 >> processed.sql 

然后将processed.sql导入到数据库中。

 # mysql mysql> CREATE mydatabase mysql> exit Bye # mysql mydatabase < processed.sql 

只要改变说Create Databaseuse

 17: -- 18: -- Create schema foo 19: -- 20: 21: CREATE DATABASE IF NOT EXISTS foo; 22: USE foo; 23: 24: -- 

至:

 17: -- 18: -- Create schema foo 19: -- 20: 21: CREATE DATABASE IF NOT EXISTS DBNAMEYOUWANT; 22: USE DBNAMEYOUWANT; 23: 24: -- 

其中DBNAMEYOUWANT是要创build的数据库名称并执行导入。

另外,你可以使用sed:

 sed -i "s/^CREATE\ DATABASE\ IF\ NOT\ EXISTS\ foo;/CREATE\ DATABASE\ IF\ NOT\ EXISTS\ DBNAMEYOUWANT;/g" /path/to/dump sed -i "s/^USE\ foo;/USE\ DBNAMEYOUWANT;/g" /path/to/dump 

您可以手动删除该行对,然后将其导入到现有数据库。