![将包含 CREATE DATABASE 和 USE 的 MySQL 转储导入到自定义数据库](https://linux22.com/image/595434/%E5%B0%86%E5%8C%85%E5%90%AB%20CREATE%20DATABASE%20%E5%92%8C%20USE%20%E7%9A%84%20MySQL%20%E8%BD%AC%E5%82%A8%E5%AF%BC%E5%85%A5%E5%88%B0%E8%87%AA%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E5%BA%93.png)
我收到了一个巨大的数据库转储(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
您可以手动删除该对行,然后将其导入到现有数据库。