如何从mysql备份中提取单张表数据
2016-04-06 19:49
369 查看
1、先提取备份数据中的前50行出来,查看一下备份数据格式
head -50 bakdb.sql > head50.txt
类似下面的数据是我们所需要提取的:
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-- Table structure for table `TABLE_1`
说明:1、前半部分是设定数据的格式,可防止所导入的数据出现乱码
2、下半部分表面了一个表数据的开始,只要我们能把指定表的开始到下一个表的开始中间部分内容提取出来,我们的目的就达成了
2、确认指定表的下一个表的开始,按理说,表名顺序都是按字母排序的,我们可以用 SQLyog 查看得到,但为了以防万一,我们有必要确认一下
grep "Table structure for table" bakdb.sql > tables.txt
3、确认表名后,开始提取指定表数据
awk '/-- Table structure for table `TABLE_1`/,/-- Table structure for table `TABLE_2`/{print}' bakdb.sql >> head50.txt
说明:提取出来的数据是不指定库名的,我们有必要在语句开始前指定库名,避免导入数据时导错地方
在“-- Table structure for table `TABLE_1`”下一行加多“use `DATABASE_NAME`;”
head -50 bakdb.sql > head50.txt
类似下面的数据是我们所需要提取的:
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-- Table structure for table `TABLE_1`
说明:1、前半部分是设定数据的格式,可防止所导入的数据出现乱码
2、下半部分表面了一个表数据的开始,只要我们能把指定表的开始到下一个表的开始中间部分内容提取出来,我们的目的就达成了
2、确认指定表的下一个表的开始,按理说,表名顺序都是按字母排序的,我们可以用 SQLyog 查看得到,但为了以防万一,我们有必要确认一下
grep "Table structure for table" bakdb.sql > tables.txt
3、确认表名后,开始提取指定表数据
awk '/-- Table structure for table `TABLE_1`/,/-- Table structure for table `TABLE_2`/{print}' bakdb.sql >> head50.txt
说明:提取出来的数据是不指定库名的,我们有必要在语句开始前指定库名,避免导入数据时导错地方
在“-- Table structure for table `TABLE_1`”下一行加多“use `DATABASE_NAME`;”
相关文章推荐
- mysql max_allowed_packet 查询和修改
- MySql可视化工具MySQL Workbench使用教程
- MySQL Workbench 如何导入导出sql表
- yum安装MySQL5.7的相关总结
- mysql常用语句
- mysql case....when条件
- MySql的like语句中的通配符:百分号、下划线和escape
- mysql两大存储引擎的区别与选择
- mysql计算时间差函数
- MySQL创建用户与授权
- mysql主从复制及自动备份脚本
- MySQL行级锁、表级锁、页级锁详细介绍
- mysql复制表结构、表数据
- mysql 一行数据+标题转换为两列
- mysql merge table
- mysql merge table
- mysql merge table
- mysql Access denied for user \'root\'@\'localhost\'”解决办法总结,下面我们对常见的出现的一些错误代码进行分析并给出解决办法,有需要的朋友可参考一下。
- mysql大量数据迁移
- mysql 数据库引擎