从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