5.8 KiB
5.8 KiB
公司名称:宝应博森元
mysql数据库配置信息
host ip: 123.56.214.80 datasource: name: yangtangyoupin username: yangtangyoupin password: 5Fn8eWrbYFtAhCZw
数据删除任务
- 用户id数据范围: 93257 93255 93247 93246 93245 93244 93243 93242 93240 93237 93236 93235 93234 93232 93231 93230 93229 93227 93226 93225 93224 93223 93222 93221 93220 93219 93215 93210 93209 93208 93206 93205 93204 93203 93202 93201 93199 93198 93197 93196 93195 93191 93188 93181 93180 93178 93176 93175 93174 93173 93172 93165 93162 93158 93154 93151 93149 93141 93099 93098 93096 93095 93079 93076 93063 93041 93003 93001 92959 92951 92885 92884 92880 92850 92792 92754 92671 91757
需求目标
删除数据库中“用户id数据范围”内用户在所有相关表中的业务数据,保留不在该范围内的其他用户及其业务数据。
本文件可作为后续同类“按用户范围删除数据”需求的标准处理方案文档。执行时只需替换公司信息、数据库连接信息和用户 ID 范围。
执行边界
- 删除方向:删除用户 ID 范围内的数据,保留范围外数据。
- 表范围:不只处理显式列出的表,需要扫描目标库所有表结构,找出用户关联字段后统一处理。
- 字段范围:重点处理以下用户关联字段:
uiduser_idseller_idbuyer_idout_user_idbargain_user_idpay_uid- 其他明确表示用户 ID 的字段
- 核心用户表:
wa_users.ideb_user.uid
- 特殊字段边界:
eb_user.spread_uid表示“当前用户的推荐人”。- 当
spread_uid命中待删除用户 ID 时,不删除这些范围外用户,也不默认清空该字段。 spread_uid仅作为预检报告项,除非需求另行明确要求处理。
预检要求
执行删除前必须先做只读预检:
- 确认连接的数据库为目标库
yangtangyoupin。 - 扫描
INFORMATION_SCHEMA.COLUMNS,找出所有用户关联字段。 - 对每个命中的表字段统计目标用户 ID 的命中行数。
- 单独报告
eb_user.spread_uid命中数量,但不纳入删除范围。 - 输出清理前基线统计,作为最终删除数量核对依据。
参考字段扫描范围:
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND (
COLUMN_NAME IN (
'uid',
'user_id',
'seller_id',
'buyer_id',
'out_user_id',
'bargain_user_id',
'pay_uid',
'spread_uid'
)
OR COLUMN_NAME LIKE '%user%'
OR COLUMN_NAME LIKE '%uid%'
OR COLUMN_NAME LIKE '%seller%'
OR COLUMN_NAME LIKE '%buyer%'
)
ORDER BY TABLE_NAME, COLUMN_NAME;
删除规则
wa_* 相关表
删除用户 ID 范围内的相关记录:
wa_users:删除id在用户 ID 范围内的记录。wa_order:删除seller_id或buyer_id在用户 ID 范围内的订单。同一订单只删除一次。wa_merchandise:删除user_id在用户 ID 范围内的寄售商品。wa_selfbonus_log:删除user_id在用户 ID 范围内的记录。wa_sharebonus_log:删除user_id在用户 ID 范围内的记录。wa_coupon_log:删除user_id在用户 ID 范围内的记录。wa_address、wa_alipay、wa_bank、wa_money_log、wa_withdraw等存在user_id字段的表:删除user_id在用户 ID 范围内的记录。
eb_* 相关表
删除用户 ID 范围内的相关记录:
eb_user:删除uid在用户 ID 范围内的记录。eb_user_integral_record:删除uid在用户 ID 范围内的记录。eb_user_address、eb_user_bill、eb_user_brokerage_record、eb_user_experience_record、eb_user_extract、eb_user_level、eb_user_recharge、eb_user_sign、eb_user_token、eb_user_visit_record等存在uid字段的用户表:删除uid在用户 ID 范围内的记录。eb_store_order、eb_store_cart、eb_store_coupon_user、eb_store_pink、eb_store_product_log、eb_store_product_relation、eb_store_product_reply等存在uid/pay_uid/bargain_user_id的业务表:删除相关字段在用户 ID 范围内的记录。eb_pay_component_order.out_user_id等明确表示用户 ID 的字段:删除字段值在用户 ID 范围内的记录。
其他相关表
t_platform_account.user_id等非wa_*/eb_*表:如字段语义明确为用户 ID,删除字段值在用户 ID 范围内的记录。- 仅字段名包含
username、user_phone、user_address等非用户 ID 语义字段时,不按用户 ID 范围删除。
执行顺序
- 先删除业务子表和日志表数据。
- 再删除订单、商品、积分、账单、访问记录等用户关联数据。
- 最后删除核心用户表:
wa_users WHERE id IN (...)eb_user WHERE uid IN (...)
- 不处理
eb_user.spread_uid IN (...)的范围外用户。
校验要求
删除完成后必须逐表校验:
- 所有纳入删除范围的
uid、user_id、seller_id、buyer_id、out_user_id、bargain_user_id、pay_uid等字段,对目标用户 ID 的命中数应为0。 wa_users.id在目标用户 ID 范围内的记录数应为0。eb_user.uid在目标用户 ID 范围内的记录数应为0。wa_order中seller_id或buyer_id在目标用户 ID 范围内的记录数应为0。eb_user.spread_uid命中范围内 ID 的记录可以继续存在,作为保留边界说明输出。
输出要求
执行完成后输出以下结果:
- 每张表清理前命中数。
- 每张表实际删除数。
- 每张表清理后剩余命中数。
eb_user.spread_uid的保留说明。- 最终结论:是否所有纳入删除范围的相关数据均已清零。