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的内置函数,例如字符串函数和算数函数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)