从MySQL全库备份中恢复某个库和某张表的方法

一定要使用测试库操作

一、全库备份恢复单个库的数据流程:
1. 第一种方法:
--从全备中导出所需库的建库语句和INSERT语句。
sed -n '/^-- Current Database: `库名`/,/^-- Current Database: `/p' 全备.sql > test.sql

--导入库,会自动建库
mysql 库名 < test.sql

2. 另一种方法:
mysql -u用户 -p密码 单个数据库名 -o < 全备的sql文件

备注:
-o 为 --one-database的缩写,忽略其它库,只保留在命令行中的数据库。

done

二、全库备份恢复单个表的数据流程:
1、从全备份中提取出该表的建表语句
sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `表名`/!d;q' 全备库或导出的单库.sql > 表tt.sql

2. 提取该表的insert into语句,追加到上一个建库sql后
grep -i 'INSERT INTO `表名`' 全备库或导出的单库.sql >>表tt.sql

3. 导入到对应库中

mysql 库名 < 表tt.sql
或:
use 库名;
source 表tt.sql;

done

 

posted @ 2023-09-07 12:24  莫让年华付水流  阅读(445)  评论(0编辑  收藏  举报