# 学生学籍号刷新脚本 ## 📋 脚本说明 本脚本用于自动刷新学生信息表(`xg_student_msg`)中的学籍号字段(`ext_field2`)。 **刷新规则**: `ext_field2 = 'G' + id_card` ## 🚀 快速开始 ### 1. 一次性刷新(推荐) ```bash # 进入脚本目录 cd 学籍号刷新 # 执行一次性刷新所有学籍号 ./run_refresh.sh once # 或者直接运行 ./process_student_id_card_refresh.sh once ``` ### 2. 持续监控模式 ```bash # 前台执行(会一直运行) ./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 参数 ```bash # 数据库配置 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分钟) ``` ## 📈 验证结果 ```sql -- 统计学籍号生成情况 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; ``` ## 🔒 安全注意 1. **备份数据**: 执行前务必备份数据库 2. **测试环境**: 先在测试环境验证 3. **权限控制**: 确保数据库用户有UPDATE权限 ## 📞 技术支持 如有问题,请参考: - [学生学籍号刷新脚本设计说明.md](学生学籍号刷新脚本设计说明.md) - 项目技术团队 --- **最后更新**: 2025-12-26 **脚本版本**: v1.0.2