接到领导要求,要求在测试服务器上面新建一个库,数据跟原来的测试库一模一样,做测试用,于是我

mysqldump -uroot -ppassword --databases dbname > newdb.sql

导出原库后,我tail一下newdb.sql,嗯,有内容。

然后create databases newdb,切换到newdb

source /root/newdb.sql

因为数据比较大~耗时比较久。大概2个小时。。。

2个小时后数据导完了,我切换到newdb,show tables之后发现。。。竟然没有数据!!!

当时在想是不是有人连上MySQL之后中断任务了…

问了一下其他同事没人连接啊,郁闷,于是我重复了上面的步骤…

两个小时后查看,还是没有!!!一阵抓狂之后冷静下来…

head -50 newdb.sql

我发现,导出的脚本前面竟然有

create dbname

然后是

use dbname

就是说我刚刚做的导入操作都是在原库上面进行的…白玩了一天~

好吧,发现问题解决问题,把那两个语句中的dbname改成newdb就行了,机智如我啊

于是我习惯性的

vim newdb.sql

问题来了,十几G的脚本文件,我竟然想用vim修改…图样图森破…

之前学习的时候记得导出的时候可以不生成这两个语句?于是查了mysqldump的参数,真有~

mysqldump -uroot -ppassword --no-create-db --databases dbname > newdb.sql

只导出数据,而不添加create databases语句。

然后head查看了一下脚本,嗯,没有那个create dbname语句了

但是。。。还是有use dbname!!!这样还是会导入到原库啊啊啊啊

没办法,还是从修改newdb.sql脚本入手吧。。

放弃用vim的想法,向童鞋请教,用sed或是awk可以实现

于是我百度了一下,用下面的命令修改:

sed -i '1,40s/dbname/newdb/g'

等待了一段时候后,操作完成,head查看,已经改好

然后重复导入操作,two hours later~

整个世界,清净了……

哎~因为自己的无知结果折腾了那么久

以后一定要好好学习,发粪涂墙~