Files
hzdyjs/学校学生操行历史数据迁移/README.md
T
2026-01-04 10:00:08 +08:00

211 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 学生操行分历史数据迁移工具
## 📋 概述
本工具用于将学校历史操行分数据从Excel文件导入到校园管理系统数据库中。支持完整的迁移流程,包括数据导入、解析、关联、导入和验证。
## 🎯 迁移流程
### 数据处理流程
```
Excel文件 → 临时表导入 → 数据解析 → 学生关联 → 正式导入 → 验证清理
```
### 脚本执行顺序
1. **01_import_excel_to_temp.py** - Excel数据导入临时表
2. **02_parse_score_data.py** - 数据解析处理
3. **03_link_student_data.py** - 数据关联处理
4. **04_import_to_production.py** - 正式导入处理
5. **05_validate_and_cleanup.py** - 验证与清理
## 🚀 快速开始
### 1. 环境准备
```bash
# 安装依赖
pip install -r requirements.txt
# 确保Excel文件存在
ls -la 操行.xls
```
### 2. 创建临时表
```bash
# 连接到数据库,执行建表脚本
mysql -h 47.99.164.66 -u root -p hzdyjs_xg < create_temp_tables.sql
```
### 3. 执行完整迁移
```bash
# 一键执行所有步骤
python import_conduct_score_history.py
```
### 4. 分步骤执行(推荐用于调试)
```bash
# 步骤1:Excel导入
python 01_import_excel_to_temp.py
# 步骤2:数据解析
python 02_parse_score_data.py
# 步骤3:数据关联
python 03_link_student_data.py
# 步骤4:正式导入
python 04_import_to_production.py
# 步骤5:验证清理
python 05_validate_and_cleanup.py
```
## 📊 数据格式说明
### Excel文件要求
- 文件名:`操行.xls`
- 必需列:`学号`、`学年`、`学期`、`平时分数`
- 其他列:`姓名`、`性别`、`民族`、`最终分`、`等级`、`院系`、`专业`、`班级`、`年级`
### 数据格式转换
#### 学年格式
- Excel: `2015-2016`
- 数据库: `2015`
#### 学期格式
- Excel: `第一学期` → 数据库: `1`
- Excel: `第二学期` → 数据库: `2`
#### 平时分数格式
- Excel: `一月:90,九月:85,十月:85,十一月:90,十二月:85`
- 数据库: 多条月度记录,每条记录一个月份的分数
## 🛠️ 高级用法
### 从指定步骤开始执行
```bash
# 从步骤3开始执行(适用于断点续传)
python import_conduct_score_history.py --start-from 3
```
### 仅执行验证
```bash
# 只执行验证步骤,不执行迁移
python import_conduct_score_history.py --validate-only
```
### 清理临时数据
```bash
# 验证完成后清理临时表
python 05_validate_and_cleanup.py --cleanup
```
## 📋 配置说明
### 数据库配置 (db_config.py)
- 数据库连接信息
- 表名映射
- 常量配置
- 月度和学期映射
### 日志文件
- `logs/01_import_excel.log` - Excel导入日志
- `logs/02_parse_data.log` - 数据解析日志
- `logs/03_link_data.log` - 数据关联日志
- `logs/04_import_production.log` - 正式导入日志
- `logs/05_validate_cleanup.log` - 验证清理日志
- `logs/migration_main.log` - 主控制脚本日志
## 🔍 验证与监控
### 自动验证
脚本5会自动进行以下验证:
- 数据完整性检查
- 关联关系验证
- 重复数据检查
- 分数范围验证
### 错误处理
- 解析失败的记录会标记为error状态
- 关联失败的记录会记录错误信息
- 导入失败的记录会回滚并记录
### 输出文件
- `migration_report_YYYYMMDD_HHMMSS.txt` - 详细迁移报告
- `migration_parse_errors.csv` - 解析错误详情
- `migration_link_errors.csv` - 关联错误详情
## ⚠️ 注意事项
### 数据安全
- 导入前会检查重复数据,避免重复导入
- 事务处理确保数据一致性
- 支持断点续传,不会因为中断丢失进度
### 性能考虑
- 大批量处理,自动分批提交
- 索引优化,提升查询性能
- 内存管理,避免大文件导致内存溢出
### 错误恢复
- 每个步骤都可以独立重试
- 错误记录详细,便于问题定位
- 支持部分成功场景的继续处理
## 🐛 故障排除
### 常见问题
1. **Excel文件不存在**
- 检查文件路径和文件名
- 确保文件在当前目录
2. **数据库连接失败**
- 检查网络连接
- 验证数据库配置
- 确认用户权限
3. **数据解析失败**
- 检查Excel数据格式
- 查看错误日志详情
- 手动修复数据后重试
4. **学生关联失败**
- 检查学号是否存在于学生表
- 确认学生状态为有效
- 查看关联错误CSV文件
### 调试模式
```bash
# 查看详细日志
tail -f logs/migration_main.log
# 检查临时表数据
mysql -e "SELECT COUNT(*) FROM temp_conduct_score_import;"
# 查看错误记录
mysql -e "SELECT * FROM temp_conduct_score_parsed WHERE processing_status = 'error' LIMIT 5;"
```
## 📞 技术支持
如遇到问题,请:
1. 查看相关日志文件
2. 检查错误输出文件
3. 确认数据格式正确性
4. 联系技术支持团队
## 📝 更新日志
- v1.0.0 (2025-01-XX): 初始版本,支持完整迁移流程
- 支持断点续传和错误恢复
- 自动验证和报告生成