奇葩系统的数据库处理步骤记录一下

奇葩系统的数据库处理步骤记录一下
●茹菓ミ一、合同状态修改
1. 涉及的表与字段
| 表名 | 字段 | 说明 |
|---|---|---|
| cg_contract_info_01 | STATUS | 合同状态:DRAFT(草稿)、APPROVED(审核通过)、REJECTED(驳回) |
| PAPER_BPO_ID | 纸质合同号 | |
| BPO_ID | 合同编号 |
| 表名 | 字段 | 说明 |
|---|---|---|
| cg_contract_other_info | STATUS | 合同状态:DRAFT(草稿)、APPROVED(审核通过)、REJECTED(驳回) |
| PAPER_BPO_ID | 纸质合同号 | |
| BPO_ID | 合同编号 |
| 表名 | 字段 | 说明 |
|---|---|---|
| cg_contract_price | STATUS | 合同状态:DRAFT(草稿)、APPROVED(审核通过)、REJECTED(驳回) |
| PAPER_BPO_ID | 纸质合同号 | |
| BPO_ID | 合同编号 |
| 表名 | 字段 | 说明 |
|---|---|---|
| ir_bu_stock_busi | UPLOAD_FLAG | 状态:0(未上传)、1(已上传) |
| STOCK_BUSI_NR | 组批单号 |
2. 修改语法
UPDATE 表名称
SET 字段 = ‘状态’
WHERE 字段 = ‘字段数据’;
3. 常用合同审批流程查询
| 表名 | 用途 |
|---|---|
| cg_contract_info_01 | 采购合同审批 |
| cg_contract_other_info | 服务合同审批 |
| ir_md_state_machine_history | 服务合同审批流程 |
| cg_contract_price | 价格维护 |
| ir_bu_stock_busi | 组批组样 |
4. 常用业务表说明
| 表名 | 用途 |
|---|---|
| am_cm_print_measure | 计量单查询 |
| am_cm_measure_tare_config | 皮重计量数据 |
| am_cm_measure_tare_mess | 皮重差异确认 |
| am_cm_measure_gross_mess | 毛重异常超订单异常 |
| ir_bu_stock_item | 质检组批数据查询 |
| ir_bu_stock_busi | 组批组样查询 |
| ir_sl_sales_load_item | 销售发运装车表 |
| am_cm_measure_yjzt | 转储数据 |
| cg_js_other_item | 采购结算数据 |
5. 常用视图
| 视图名 | 用途 |
|---|---|
| v_md_jlsj | 物资原料采购 |
| view_eg_hberqi | 车辆查询 |
| view_eg_hbhuoyun | 火运 |
| view_eg_hbhzd | 转储 |
| view_eg_hbqd | 行车路线 |
二.MySQL 生产环境批量删除全流程记录
外部账套导入合同数据无法批量删除,只能从数据库删除了。
1.反向查找数据所在位置
SQLyog 右键数据库 → 新数据查询 或 Navicat 右键数据库 → 在数据库中查找,输入 “数据信息”,直接返回表名和字段名。例如查询 QC260410J0319。
1.1找到结果
| 表名 | 字段 |
|---|---|
| cg_js_deliver_goods | SALE_ID |
2.准备待删除的 ID 列表
例如本次共有394个 “SALE_ID” 需要删除,从 “QC260410J0001” 到 “QC260410J0394”,最终需批量删除 394 条。数据存放于 Excel 文件 “删除数据.xlsx”,格式为一列纯数据(表头为”SALE_ID”)。
2.1创建临时表存放 ID
为防止导入时的字符集冲突,先手动建表:
2.2 导入 Excel 数据到临时表
- 确保 Excel 第一行有列标题(如 “SALE_ID”),否则首行数据会被当成标题而丢失。
- SQLyog 中右键库 hfny → 导入 → 导入外部数据。
- 选择文件,在“选择表”页面将 “Destination” 改为已存在的表 “tmp_shanchushuju”。
- 确认字段映射正确。
- 执行导入,成功日志显示 394 rows transferred`**。
3.删除前验证(关键)
3.1 核对临时表数量
SELECT COUNT(*) FROM hfny.tmp_delete_ids;
3.2 核对临时表数量
SELECT COUNT(*)
FROM hfny.cg_js_deliver_goods cg
INNER JOIN hfny.tmp_delete_ids t ON cg.SALE_ID = t.SALE_ID;
3.3 备份待删除数据
CREATE TABLE hfny.cg_js_deliver_goods_bak_20260428 AS
SELECT cg.*
FROM hfny.cg_js_deliver_goods cg
INNER JOIN hfny.tmp_delete_ids t ON cg.SALE_ID = t.SALE_ID;
验证备份表行数:
SELECT COUNT(*) FROM hfny.cg_js_deliver_goods_bak_20260428;
4. 事务删除
4.1 正式删除步骤
4.1.1 开启事务
START TRANSACTION;
4.1.2 执行删除(通过 JOIN 精确匹配)
DELETE cg
FROM hfny.cg_js_deliver_goods cg
INNER JOIN hfny.tmp_delete_ids t ON cg.SALE_ID = t.SALE_ID;
4.1.3 查看受影响行数
SELECT ROW_COUNT();
4.1.4 二次确认这些数据已不在正式表
SELECT COUNT(*)
FROM hfny.cg_js_deliver_goods cg
INNER JOIN hfny.tmp_delete_ids t ON cg.SALE_ID = t.SALE_ID;
4.1.5 确认无误则提交
COMMIT;
4.1.6 异常回滚
若中间发现任何异常(如删除行数不符、二次确认仍有数据),立即执行:
ROLLBACK;
5.主从环境特别说明
生产环境为 主从复制架构,通过浮动 VIP 连接主库。
- 只需在主库执行一次删除,从库自动通过 binlog 同步。
- 执行 SHOW SLAVE HOSTS; 能看到从库信息,确认当前连接为主库。
6.清理与收尾
6.1 删除临时表
DROP TABLE IF EXISTS hfny.shanchushuju;
6.2 备份表保留
cg_js_deliver_goods_bak_20260428 建议保留 7~14 天,确认业务无异常后手动删除:
DROP TABLE IF EXISTS hfny.cg_js_deliver_goods_bak_20260428;
7.异常处理备忘
| 异常现象 | 应对措施 |
|---|---|
| 临时表导入数量不对 | 清空临时表,修正 Excel(加表头、去空行),重新导入;或使用 LOAD DATA 命令 |
| 正式表匹配数量 ≠ 393 | 停止操作,核对临时表 ID 是否多余或缺失,修正后再验证 |
| 外键约束导致删除失败 | 先删除关联子表记录,或紧急时临时禁用外键检查(需评估风险) |
| 删除行数与预期不符 | 立即回滚,检查是否因触发器或其它会话干扰,重新确认条件后重试 |
| 从库复制延迟过大或中断 | 等待同步完成,或按从库维护流程处理 |
8.经验总结
- 反向搜索:图形化工具比手写 SQL 更快,但对非字符串列需放宽类型限制。
- 临时表导入:手动建表可避开字符集冲突;Excel 必须有表头。
- 安全三原则:先验证数量 → 备份 → 事务中操作,确认无误再提交。
- 浮动地址:主从架构只操作主库,从库自动同步,不要画蛇添足两边删。
- 生产敬畏:每一步结果都截图留档,全程在低峰窗口执行。





