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

将包含 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: --  

答案1

使用头部和尾部将该部分从垃圾堆中移除

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

答案2

只需将以下几行改为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 是您想要创建并执行导入的数据库名称。

另外,您还可以使用 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

答案3

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

相关内容