学生学籍号刷新脚本
📋 脚本说明
本脚本用于自动刷新学生信息表(xg_student_msg)中的学籍号字段(ext_field2)。
刷新规则: ext_field2 = 'G' + id_card
🚀 快速开始
1. 一次性刷新(推荐)
# 进入脚本目录
cd 学籍号刷新
# 执行一次性刷新所有学籍号
./run_refresh.sh once
# 或者直接运行
./process_student_id_card_refresh.sh once
2. 持续监控模式
# 前台执行(会一直运行)
./run_refresh.sh monitor
# 后台执行(推荐方式)
./run_refresh.sh bg
📊 执行结果
最新执行结果(2025-12-26):
- 总学生数: 13,884
- 已生成学籍号: 13,883
- 待刷新: 1
📈 优化说明
v1.0.2 更新 (2025-12-26):
- ✅ 后台执行: 新增
bg模式,支持一键后台启动守护进程 - ✅ 用户体验: 提供PID显示、状态检查和停止命令提示
v1.0.1 更新 (2025-12-26):
- ✅ 简化逻辑: 移除不必要的预查询,直接执行UPDATE语句
- ✅ 提高效率: 使用
SELECT ROW_COUNT()获取受影响行数,一次查询完成 - ✅ 减少数据库压力: 减少不必要的统计查询
📁 文件结构
学籍号刷新/
├── data.conf # 开发环境配置
├── data.conf.prod # 生产环境配置
├── process_student_id_card_refresh.sh # 主脚本
├── run_refresh.sh # 快速执行脚本
├── README.md # 使用说明
├── 学生学籍号刷新脚本设计说明.md # 详细设计文档
└── student_id_card_refresh/ # 日志目录
└── *.log # 执行日志
⚙️ 配置说明
data.conf 参数
# 数据库配置
DB_HOST="47.99.164.66"
DB_PORT="3306"
DB_NAME="hzdyjs_xg"
DB_USER="root"
DB_PASS="your_password"
# 处理配置
BATCH_SIZE=500 # 批次大小
CYCLE_INTERVAL=600 # 检查间隔(秒,默认10分钟)
📈 验证结果
-- 统计学籍号生成情况
SELECT
COUNT(*) as total_students,
SUM(CASE WHEN ext_field2 LIKE 'G%' THEN 1 ELSE 0 END) as with_id_card,
SUM(CASE WHEN ext_field2 IS NULL OR ext_field2 = '' THEN 1 ELSE 0 END) as need_refresh
FROM xg_student_msg
WHERE deleted = 0;
-- 查看学籍号样例
SELECT student_no, name, id_card, ext_field2
FROM xg_student_msg
WHERE ext_field2 LIKE 'G%'
AND deleted = 0
LIMIT 5;
🔒 安全注意
- 备份数据: 执行前务必备份数据库
- 测试环境: 先在测试环境验证
- 权限控制: 确保数据库用户有UPDATE权限
📞 技术支持
如有问题,请参考:
- 学生学籍号刷新脚本设计说明.md
- 项目技术团队
最后更新: 2025-12-26 脚本版本: v1.0.2