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