mysql-回复DELETE数据

mysql-回复DELETE数据,第1张

测试小伙伴不小心执行了 DELETE * FROM 表名 语句,删除了测试服十几万条数据。因为测试还需要这些数据,所以只能进行恢复

1.找到mysql的日志文件binlog(二进制)

2.筛选出执行的DELETE语句,并重定向到文件中方便查看

当执行 DELETE * FROM 表名 语句时,实际上是对表内的数据一条条执行 DELETE FROM XXX WHERE XXXXXX 。而因为binlog文件很大(基本几百M起步),所以需要根据执行 DELETE * FROM xxx 语句的大概时间,进行筛选。语句: mysqlbinlog -vv --start-datetime='2020-06-10 10:10:00' binlog文件名 >重定向文件名1

3.再根据重定向文件1中的内容再次筛选,比如我想要 DELETE FROM `xxxx`.`t_channel 这一行以及下面13行的内容。所以我会再次进行筛选并重定向生成新的文件: cat 重定向文件名1 -C 13 `DELETE FROM `xxxx`.`t_channel` >重定向文件名2 ,这样我会得到一个只包含 DELETE FROM XXX WHERE XXXXXX 语句的文件。

PS.

参考: https://blog.csdn.net/weixin_33811961/article/details/89593855

对于数据库管理者来说,有时需要根据查询结果生成一系列非常相似但数量较多的sql命令,然后执行。

为此,就需要将查询结果进行格式化,并输出到外部文件中。对于select的查询结果,有个MySQL提供了直接的方法将查询结果写入到外部文件,其基本形式为

select * INTO OUTFILE 'file_name' from tab_list

我们还可以将查询结果进行一定的修饰,这要用到各种MySQL的内置函数,例如字符串函数和算数函数。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7275854.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存