记录平凡生活,关注互联网,专注Linux运维技术.

从Mysql备份中恢复单个表

因为云平台的备份是把库中所有的表都打包成一个 .sql文件,然而这一个.sql文件大约有20G,现阶段的方法是把.sql文件source到数据库数据处理机器上,然后再根据需求提出需要的表。每次这个操作都需要大约2个多小时,太耗时。闲暇时间,Google到了一个大神写的几行代码,经过实验确实很好用。下面就分享出来,仅供参考。

思路(原谅我也理解了好一会儿):

主要使用sed命令来实现,加上-n,-e参数把打印的结果追加到一个文件中,就得到了想要的表的内容。

一般情况下我们使用sed打印指定行的内容是:

-n:只打印符合条件的行
-n:使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。

不加-n的话,不仅打印结果行,也打印整个文本的内容。

原始导出的lianst.sql文件内容:

《从Mysql备份中恢复单个表》

我们使用如下sed命令从原始sql中导出wp_comments表:

意思是:打印DROP TABLE.*wp_comments行到UNLOCK TABLES的内容,并以追加重定向的方式追加到lianst.wp_comments.sql文件中
DROP TABLE.*wp_comments中间的.*是正则所有的意思

结果如下:
《从Mysql备份中恢复单个表》

此时,lianst.wp_comments.sql 就是我们从原始备份sql(lianst.sql)中导出的wp_comments表的sql语句。接下来我们就可以针对这一个表来进行恢复了。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注