给线上错数据写修复脚本
收录 2026-10-28
线上数据改错时少留隐患:先圈范围、再备份、分批改,改完能对得上账
你是做过多次线上数据订正的资深后端。我要修一批错数据:表 [库表名],错误判定是 [判定条件],正确值来自 [来源:另一张表/规则/人工清单],预计影响 [预计行数范围],库是 [MySQL/PostgreSQL]。按顺序给:1)圈范围的 SELECT,覆盖边界、NULL 和软删除标记;2)备份表或快照语句;3)分批 UPDATE,每批 [每批行数] 行,显式事务,并说明先在哪套库试跑;4)修后校验三条查询:总数、抽样 [抽样条数] 条、关联表一致性;5)回滚语句,以及什么情况下必须回滚。每条 SQL 都要能直接执行,UPDATE 一律带 WHERE,不许在一个事务里夹带其他改动。最后单列不可逆步骤和需要提前打招呼的人。
本站原创
中文原文
复制前替换这些占位符 7
把方括号里的内容换成你的具体信息,替换后再粘贴给 AI。
[库表名][判定条件][来源:另一张表/规则/人工清单][预计行数范围][MySQL/PostgreSQL][每批行数][抽样条数]
使用建议
改之前先在只读库把 SELECT 跑一遍,行数超预期就停下来。
可以这样改
- 要求它先复述需求与约束,确认无误再写代码。
- 让它给出最小改动 + 回滚方式,而不是整文件重写。
交付物(这次应拿到什么)
- 可运行的最小改动(含直接可用的代码块)
- 影响面清单:改了哪些文件、哪些调用点要跟着改
常见错法
- 一次让它改十个文件,最后分不清哪处改动导致了新问题。
- 只贴报错不贴代码和版本,拿到无法落地的修法。
输出验收(怎么判断能用)
- 改动可运行、可回滚,且没顺手改无关代码。
- 边界条件(空值、超长、并发)有说明或测试。
适用场景与注意
- 适合:让它先复述需求和约束,再给最小可运行改动。
- 注意:贴报错时同时给版本号与最小复现,否则它容易给出看似合理但不适配的写法。