mysql提取 sql備份檔案中的單個表以及表資料

2022-09-16 14:36:11 字數 2018 閱讀 5729

背景:隨著業務模組的不斷在增多,資料庫mysql容量也是越來越大,做測試時,整個備份還原比較耗費時間,由於有時候僅僅需要單個表或者少數幾個表,要想從整個備份檔案中提取指定的表以及資料,需要以下方法。

說明:mysql常規備份還原後續補充。。

廢話不說,直接上乾貨:

1、從整個.sql備份檔案中提取表結構

提取"sp_money_detail"表結構(表建立語句)

[root@centos7-50 data]#

sed -e'/./' -e 'x;/create table `sp_money_detail`/!d;q' qerpdb_test_v2.sql

drop table if exists `sp_money_detail`;

/*!40101 set @s**ed_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 = @s**ed_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');

...

此方法,是把創表語句以及資料插入語句列印到控制台,也可以使用重定向的方式,把這些語句輸出到指定的檔案中。

刪除mysql備份檔案

前言 前篇介紹了mysql的備份方法,但備份不是越多越好,如果磁碟空間不夠用,我需要保留近乙個周的備份就可以了,那就需要刪除備份指令碼了,特別注意刪除操作比較危險,變數傳參要進行二次確認。bin bash delte mysql back of 7 days ago author jzd versi...

SQL自動刪除備份檔案

declare sql varchar 8000 下面是刪除15天前備份檔案的處理 set sql del e databasebackup sql sql rtrim convert varchar,getdate 15,112 bak exec master.xp cmdshell sql de...

mysql增量備份檔案 mysql增量備份

突然說要我研究下增量備份,表示在此之前真的不知道這是什麼意思,網上搜說 是指在一次全備份或上一次增量備份後,以後每次的備份只需備份與前一次相比增加或者被修改的檔案。我通俗理解就是 在前一次的備份基礎上去增刪改。然後就花費了我一下午的時間,中間的心酸就不提了,正式來吧 1 首先進去cmd以管理員身份進...