最近粗心把数据库一张表的内容更新错了,需要从每日mysqldump 文件中提取出改表的建表语句和插入语句,来恢复数据。我从stackoverflow上搜索到两种解决方法:
第一种方法, 建立一个临时的库,将dump 导入进去,然后再导出需要的表。这种方法操作做简单,也不容易出错。但是因为要导入整个库,十分耗时。
方法二,利用sed命令
sed -n -e '/DROP TABLE.* `tablename`/, /UNLOCK TABLES/p' dump.sql tabledump.sql
这是命令利用sed 来模拟grep 命令. 通过下面的命令形式来指定sed要去检阅和修改的行。
sed '/pattern/p' #一定要接/p 指令,不然会报错
sed '/pattern/p' file.txt #这条命令会输出符合这个pattern整行的内容