通过Linux命令过滤出binlog中完整的SQL语句
DB:5.6.16
CentOS:CentOS release 6.3 (Final)
当insert语句通过空格跨行输入的时候,如何提取完整的insert语句!
创建一个空表:
mysql> create table yoon as select * from sakila.actor where 1=0;
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0
查看表名:
mysql> show tables;
+----------------+
| Tables_in_yoon |
+----------------+
| yoon           |
+----------------+
1 row in set (0.00 sec)
查看数据:
mysql> select * from yoon;
Empty set (0.00 sec)
查看表结构:
mysql> desc yoon;
+-------------+----------------------+------+-----+-------------------+-----------------------------+
| Field       | Type                 | Null | Key | Default           | Extra                       |
+-------------+----------------------+------+-----+-------------------+-----------------------------+
| actor_id    | smallint(8) unsigned | NO   |     | 0                 |                             |
| first_name  | varchar(45)          | NO   |     | NULL              |                             |
| last_name   | varchar(45)          | NO   |     | NULL              |                             |
| last_update | timestamp            | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------------+----------------------+------+-----+-------------------+-----------------------------+
4 rows in set (0.00 sec)
夸行方式插入测试数据:
mysql> insert into yoon 
    -> 
    -> values
    -> 
    -> (1,'YOON','HANK',2006-02-15 04:34:33)
    -> 
    -> ;
查看mysql-binlog日志:
[root@hank-yoon data]# ls
auto.cnf            hank      ibdata1  ib_logfile0  ib_logfile2  mysql-bin.000043  mysql-bin.000045  performance_schema  test  yoon.sql
binlog-rollback.pl  hank.sql  ibdata2  ib_logfile1  mysql        mysql-bin.000044  mysql-bin.index   sakila              yoon
将binlog数据转换到yoon.sql:
[root@hank-yoon data]# mysqlbinlog mysql-bin.000045 > yoon.sql
过滤出insert语句:
[root@hank-yoon data]# more yoon.sql | grep --ignore-case -E 'insert' -A2 -B2 | grep yoon > hank.sql
查看insert语句,发现跨行插入的SQL语句截至到insert into yoon就结束:
[root@hank-yoon data]# cat hank.sql 
insert into yoon (first_name,last_name) select first_name,last_name from hank
insert into yoon
通过以下命令,可以查看完整的SQL语句,即使是跨行插入,分好(;)都给你带上:
[root@hank-yoon data]# sed  -n  "/insert into yoon/,/;/p"  yoon.sql  |sed  's#\/\*!\*\/##'
insert into yoon (first_name,last_name) select first_name,last_name from hank
;
insert into yoon
values
(1,'YOON','HANK','2006-02-15 04:34:33')
;
通过Linux命令过滤出binlog中完整的SQL语句的更多相关文章
- 如何找出MySQL数据库中的低效SQL语句
		
面对业务的迅猛发展,DBA的一项重要工作就是及时发现数据库中的低效SQL语句,有的可以立刻着手解决(比如缺少合适的索引),有的需要尽快反馈给开发人员进行修改. MySQL数据库有几个配置选项可以帮助我 ...
 - 在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计、SQL语句、java等层面的解决方案。
		
在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计.SQL语句.java等层面的解决方案. 解答: 1)数据库设计方面: a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 whe ...
 - SQL Server中常用的SQL语句(转):
		
SQL Server中常用的SQL语句 转自:http://www.cnblogs.com/rainman/archive/2013/05/04/3060428.html 1.概述 名词 笛卡尔积.主 ...
 - SQL*PLUS中批量执行SQL语句
		
SQL*PLUS中批量执行SQL语句 今天由于工作的需要,要在CMD中批量执行大量的SQL语句,对于Oracle学习还处在入门阶段的我,只能硬着头皮到处去寻找资料(主要是网络资料,也包括自己的电子书) ...
 - 使用PreparedStatement时,输出完整的SQL语句
		
使用psstmt时不能打印出完整的sql语句,挺不方便的,找到一个实现方法,记录下来. package com.zhh.function.util; import java.io.InputStrea ...
 - 在程序开发中怎样写SQL语句可以提高数据库的性能
		
以下内容是公司dba总结. 1. 首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来 ...
 - 面试、笔试中常用的SQL语句(数据库知识必杀)一共50个!!!
		
Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 ...
 - 在ADO.NET中使用参数化SQL语句访问不同数据库时的差异
		
在ADO.NET中经常需要跟各种数据库打交道,在不实用存储过程的情况下,使用参数化SQL语句一定程度上可以防止SQL注入,同时对一些较难赋值的字段(如在SQL Server中Image字段,在Orac ...
 - SQL点滴32—Excel中CONCATENATE函数生成SQL语句
		
原文:SQL点滴32-Excel中CONCATENATE函数生成SQL语句 当拿到一个Excel的时候需要将这里面的数据插入到数据库里面,该怎么办,除了使用SSIS数据导入之外还可以使用Excel中的 ...
 
随机推荐
- String类的方法2
			
---恢复内容开始--- .ToLower() //转为小写字符串"AbC"-->"abc" .ToUpper() //转为大写"A ...
 - mac jdk设置
			
mac系统一般默认会安装jdk 1.6,路径为/System/Library/Java/JavaVirtualMachines/1.6.0.jdk,此Jdk为系统默认jdk; 但某些框架/应用要求jd ...
 - ReactNative学习-滑动查看图片第三方组件react-native-swiper
			
滑动查看图片第三方组件:react-native-swiper,现在的版本为:1.4.3,该版本还不支持Android. 下面介绍的是该组件的一些用法,可能总结的不完整,希望大家一起来共同完善. 官方 ...
 - 使用Word 2013向cnblog发布博文
			
Windows Live软件许久不更新,就想用手头的Word 2013作为cnblogs博客的撰写工具.在查看cnblogs关于Windows Live的配置说明时,发现下列有Word 2007的配置 ...
 - 主机、虚拟机、开发板(u-boot)之间的连接 - ping测试
			
1.设置主机的IP地址(这里注意,设置一定要设置网线宽带IP,不要选成无线网络的) 查看重点是否本地以太网卡(Realtek PCIe……) 2.修改本地连接3个IP地址,一定主机.虚拟机.开发板 三 ...
 - 201509020-js
			
JS 关于(function( window, undefined ) {})(window)写法的理解 JS 关于(function( window, undefined ) {})(windo ...
 - EasyPusher推流服务接口的.NET导出
			
本文是在使用由 EasyDarwin 团队开发的EasyPusher时导出的C++接口的.NET实现 public class EasyPushSDK { public EasyPushSDK() { ...
 - 初识--Ajax & Json
			
1,AJAX是一种进行页面局部异步刷新技术. 用AJAX向服务器发送请求和获得服务器返回的数据并更新到页面中. 不是刷新整个页面,而是在HTML页面中使用JavaScript创建XMLHTTPRequ ...
 - External Table
			
CREATE TABLE AS SELECT,使用Oracle9i的External Table Oracle 9i 的一项新特性就是 External Table,它就象通常的数据库表一样,拥有字 ...
 - VSS汉化后出现问题及解决方法
			
1.vss汉化后在获取项目时不递归获取? 解决方法:工具-->选项-->常规-->勾选 项目递归时有效(R) 2.查看差异,可视化窗口未出现分隔? 解决方法:差异选项-->格式 ...