接到领导要求,要求在测试服务器上面新建一个库,数据跟原来的测试库一模一样,做测试用,于是我
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~
整个世界,清净了……
哎~因为自己的无知结果折腾了那么久
以后一定要好好学习,发粪涂墙~