我们的Mysql数据库硬盘坏了,现在只能二进制日志文件,数据库只丢失了一个表,这个表记录不全,我现在从二进制文件中生成了.sql文件,此文件接近1G,我现在想找一个程序可以将.sql文件中涉及my_dt表的insert,update,delete提取出来,请问有这样的工具吗?
解决方案 »
- SqlServer2005导数据到mysql5.1问题
- 安装mediawiki碰到的问题,有兄弟能帮忙解答下吗?
- 这个MySql语句该怎么优化?
- 求句SQL~~~~~~~
- mysql 的connection usage 经常100%,请求帮助!
- mysq如何改变系统参数??
- mySQL怎么换行啊?呵呵,菜鸟
- 怎么样按某个字段统计表中有多少类不同的数据?
- 这个问题很简单,可是我忘了…………
- CURRENT_DATE 日期函数的困惑
- mysql默认的数据库问题和修改root密码问题
- 求教:关于mysql中文查询的问题 最近在做一个网站,是用mysql作数据库,用dreamweaver设计jsp网页。
/*!*/;
/*!*/;
之间,里面包括
insert into my_dt
update my_dt
delete my_dt
但有二种情况。第一种情况,在二者之间还包括一个SET INSERT_ID=8435595/*!*/;这样的语句,它以/*!*/;结尾,所以要考虑以/*!*/;为结尾的不算不符合。
/*!*/;
# at 3610618
#101223 18:36:53 server id 1 end_log_pos 3610646 Intvar
SET INSERT_ID=8435595/*!*/;
# at 3610646
#101223 18:36:53 server id 1 end_log_pos 3611055 Query thread_id=6634974 exec_time=0 error_code=0
SET TIMESTAMP=1293100613/*!*/;
INSERT INTO my_dt(fid, tid, first, author) VALUES ('674', '834775', '0')
/*!*/;另外一种为正常情况:
/*!*/;
# at 1209
#101230 15:54:34 server id 1 end_log_pos 1577 Query thread_id=4 exec_time=0 error_code=0
SET TIMESTAMP=1293695674/*!*/;
UPDATE my_dt SET count=count+1 WHERE (type='total' AND variable='hits')
/*!*/;
# at 1577
#101230 15:54:34 server id 1 end_log_pos 1710 Query thread_id=4 exec_time=0 error_code=0
SET TIMESTAMP=1293695674/*!*/;
UPDATE xxx SET views=views+1 WHERE tid='319162'
/*!*/;
此种情况只需要提取:
/*!*/;
# at 1209
#101230 15:54:34 server id 1 end_log_pos 1577 Query thread_id=4 exec_time=0 error_code=0
SET TIMESTAMP=1293695674/*!*/;
UPDATE my_dt SET count=count+1 WHERE (type='total' AND variable='hits')
/*!*/;
即可
例如:
/*!*/;
SET TIMESTAMP=1293695674/*!*/;
UPDATE my_dt SET count=count+1 WHERE (type='total' AND variable='hits')
/*!*/;
root@mablevi-desktop:~/shell_test# cat test
BEGIN
/*!*/;
# at 51315
#101210 16:22:36 server id 1 end_log_pos 51343 Intvar
SET INSERT_ID=328/*!*/;
# at 51343
#101210 16:22:36 server id 1 end_log_pos 51548 Query thread_id=835 exec_time=0 error_code=0
SET TIMESTAMP=1291969356/*!*/;
INSERT INTO order_size_amount (order_id, amount, rule_id, size_id, company_id, member_id) VALUES ('499', '3', 153, '311', '36', '63')
/*!*/;
# at 51548
#101210 16:22:36 server id 1 end_log_pos 51575 Xid = 11333
COMMIT/*!*/;
# at 51575
#101210 16:22:36 server id 1 end_log_pos 51652 Query thread_id=835 exec_time=0 error_code=0
SET TIMESTAMP=1291969356/*!*/;
BEGIN
/*!*/;
# at 51652
#101210 16:22:36 server id 1 end_log_pos 51680 Intvar
SET INSERT_ID=154/*!*/;
# at 51680
#101210 16:22:36 server id 1 end_log_pos 51908 Query thread_id=835 exec_time=0 error_code=0
SET TIMESTAMP=1291969356/*!*/;
INSERT INTO order_rule (assembly_id, per_size, memo, order_id, order_amount_desc_id, company_id, member_id) VALUES ('347', '11', '', '499', 115, '36', '63')
/*!*/;
# at 51908
#101210 16:22:36 server id 1 end_log_pos 51935 Xid = 11334
COMMIT/*!*/;结果这样:
root@mablevi-desktop:~/shell_test# grep -i -C1 "INSERT INTO" test
SET TIMESTAMP=1291969356/*!*/;
INSERT INTO order_size_amount (order_id, amount, rule_id, size_id, company_id, member_id) VALUES ('499', '3', 153, '311', '36', '63')
/*!*/;
--
SET TIMESTAMP=1291969356/*!*/;
INSERT INTO order_rule (assembly_id, per_size, memo, order_id, order_amount_desc_id, company_id, member_id) VALUES ('347', '11', '', '499', 115, '36', '63')
/*!*/;