zoukankan      html  css  js  c++  java
  • 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');
    ...

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

  • 相关阅读:
    面试题58 二叉树的下一个结点
    面试题57 删除链表中重复的结点
    面试题56 链表中环的入口结点
    面试题55 字符流中第一个不重复的字符
    面试题54 表示数值的字符串
    面试题50 树中两个结点的最低公共祖先
    面试题53 正则表达式匹配
    面试题52 构建乘积数组
    面试题51 数组中重复的数字
    Qt链接库出错version Qt_5 not defined
  • 原文地址:https://www.cnblogs.com/tchua/p/8864584.html
Copyright © 2011-2022 走看看