mysql备份单个数据_mysql提取.sql备份文件中的单个表以及表数据

背景:随着业务模块的不断在增多,数据库mysql容量也是越来越大,做测试时,整个备份还原比较耗费时间,由于有时候仅仅需要单个表或者少数几个表,要想从整个备份文件中提取指定的表以及数据,需要以下方法。

说明:mysql常规备份还原后续补充。。

废话不说,直接上干货:

1、从整个.sql备份文件中提取表结构

提取"sp_money_detail"表结构(表创建语句)

[root@centos7-50 data]#sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `sp_money_detail`/!d;q' qerpdb_test_v2.sql

DROP TABLE IF EXISTS `sp_money_detail`;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `sp_money_detail` (

`spMoneyDetailId` int(11) NOT NULL AUTO_INCREMENT,

`spShopId` int(11) DEFAULT NULL,

`wsWarehouseId` int(11) DEFAULT NULL COMMENT '仓库ID',

`type` tinyint(4) NOT NULL,

`delta` decimal(12,2) NOT NULL,

`result` decimal(12,2) NOT NULL,

`outId` int(11) DEFAULT NULL,

`outNo` varchar(63) DEFAULT NULL,

`createTime` timestamp NULL DEFAULT NULL,

PRIMARY KEY (`spMoneyDetailId`),

KEY `I_sp_money_detail_sid` (`spShopId`)

) ENGINE=InnoDB AUTO_INCREMENT=172068 DEFAULT CHARSET=utf8mb4;

/*!40101 SET character_set_client = @saved_cs_client */;

这样就提取到了表的创建语句。可以直接丢到数据库中进行表的创建

提取表"sp_money_detail"数据(也就是提取表的插入语句)

[root@centos7-50 data]#grep 'INSERT INTO `sp_money_detail`' qerpdb_test_v2.sql

INSERT INTO `sp_money_detail` VALUES ('78156', '252', null, '21', '-4872.00', '-4872.00', '65321', 'MD17121900070', '2017-12-19 15:37:11');

INSERT INTO `sp_money_detail` VALUES ('78157', '253', null, '21', '-100.00', '-100.00', '65324', 'MD17122100040', '2017-12-21 15:50:14');

INSERT INTO `sp_money_detail` VALUES ('78158', '253', null, '21', '-230.00', '-330.00', '65325', 'MD17122100056', '2017-12-21 16:19:38');

INSERT INTO `sp_money_detail` VALUES ('78159', '253', null, '21', '-230.00', '-560.00', '65326', 'MD17122100064', '2017-12-21 16:38:03');

...

此方法,是把创表语句以及数据插入语句打印到控制台,也可以使用重定向的方式,把这些语句输出到指定的文件中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值