我收到了一个巨大的数据库转储(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 Database
:use
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
您可以手动删除该对行,然后将其导入到现有数据库。