总结下这阵子遇到的问题
时间转换
在一次查询需求中,有张表一字段为有效期截止时间,但老表是用数字记录的,新表用时间格式记录的,需求是查出相同用户的有效期最新的那条记录 方法
在Excel 中处理 使用 设置单元格格式
自定义修改成'0000-00-00'的方式使用数据-分列向导的第三步数据类型为 日期
进行分列 缺点:长度有限无法设置到秒,第一种只能小时,第二种是天使用代码进行转换 我这里使用Golang
a := "20231026225849"
b := "20060102150405"
c, _ := time.Parse(b, a)
fmt.Println(c.Format("2006-01-02 15:04:05"))
使用MySQL自带函数
SELECT STR_TO_DATE(20221010101010, '%Y%m%d%H%i%s') AS converted_date;
Golang 中将json转成struct
Goland中有工具可实现自动转换 使用地址 https://mholt.github.io/json-to-go/ (个人测试需要将文本在linux上粘贴放到网站上才行,可能换行符的问题) vscode使用使用 Paste JSON as Code
插件 其中1,2 转换的结果相似;个人喜欢第三个符合我的书写习惯
drop table
最近碰到在阿里云RDS中删除大表的问题
阿里云的RDS关于 drop table
都做了优化,在执行SQL后都是都不会产生IO上的波动,因为都是做了异步的删除;当然如果是热表还是会有刷缓存的问题。目前已知适用的版本是MySQL5.6 MySQL5.7,MySQL8.0MySQL在8.0 后做了类似的优化 腾讯云MySQL 有类似功能:异步删除大表 如果MySQL8.0 以前可以使用 该文章的方法:优雅的drop掉mysql库中1TB大表
抽样比较
之前写过一篇关于数据校验的文章,其中在抽样验证上增加了点内容
使用 select * from t order by rand() limit 100
的方法来随机抽样。缺点就是rand()
需要全表扫描。所以对表大小有限制,我写的时候增加了个上限,超过上限则不能使用该方法最近在学习 (万里开源的一个工具)gt-checksum 中的抽样比对。看看是否能写出个使用我们环境的简版抽样比对
文章转载自天天李拜天DBA,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




