前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从Mysql备份中恢复单个表

从Mysql备份中恢复单个表

作者头像
行 者
发布2018-03-26 15:10:43
4.4K0
发布2018-03-26 15:10:43
举报
文章被收录于专栏:运维技术迷运维技术迷

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

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

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

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

代码语言:javascript
复制
[root@bj ~]# cat -n sed.txt 
     1    aaa
     2    bbb
     3    ccc
     4    ddd
     5    eee
     6    fff
     7    ggg
     8

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

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

代码语言:javascript
复制
[root@bj ~]# sed -n '1,5p' sed.txt 
aaa  
bbb  
ccc  
ddd  
eee  

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

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

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

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

代码语言:javascript
复制
sed -n -e '/DROP TABLE.*wp_comments/,/UNLOCK TABLES/p' lianst.sql >> lianst.wp_comments.sql  

结果如下:

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

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

代码语言:javascript
复制
#登陆Mysql服务器
[root@bj ~]# mysql -uroot -p
Enter password:  
mysql> source lianst.wp_comments.sql;  
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 思路(原谅我也理解了好一会儿):
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档