zoukankan      html  css  js  c++  java
  • 通过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')
    ;

  • 相关阅读:
    证明一下拉普拉斯的《概率分析论》观点
    Android实现小圆点显示未读功能
    命名 —— 函数的命名
    node.js 之爬虫
    ubuntu安装 tensorflow GPU
    古文(诗词文)—— 结构模式与复用
    Win10安装Ubuntu16.04 双系统
    python使用wget下载网络文件
    文字检测与识别资源
    10大深度学习架构:计算机视觉优秀从业者必备
  • 原文地址:https://www.cnblogs.com/hankyoon/p/5169801.html
Copyright © 2011-2022 走看看