1.8 KiB
1.8 KiB
高考数据导入工作流
数据源格式
你给的河南高考数据是 xlsx 格式,覆盖 2017-2025 年:
- 一分一段表(yiyi 表)
- 投档线(schools 表)
- 专业录取分(majors 表)
核心问题:文件名编码损坏
zip 解压后中文文件名变为乱码(UTF-8 字节被误解为 Latin-1)。
河南 → ц▓│хНЧ,专业分数线 → ф╕Уф╕ЪхИЖцХ░ч║┐。
解决:不用文件名匹配,用 Excel 列头检测文件类型:
h1 = ws.cell(1,1).value
# 一分一段: h1='分数' (旧) 或 h1='年份' + C3='批次' (新)
# 投档线: h1='年份' + h2='学校' + C9='科类'
# 专业分: 同时存在'学校'列 + '专业'列
导入流程
- 全量 xlsx 上传到服务器
/tmp/import_data/ - 用
subprocess.run(['find',...])获取所有 xlsx 路径 - 遍历每个文件,根据列头判断类型
- 动态映射列:扫描 header 行建
{column_name: col_index}字典 - 用
INSERT OR IGNORE避免重复
列名映射
一分一段表
| 字段 | 旧格式(2017-2021) | 新格式(2022+) |
|---|---|---|
| score | 分数(第1列) | 分数(第5列) |
| count | 人数(第2列) | 本段人数(第6列) |
| rank | 累计人数(第3列) | 累计人数(第7列) |
| subject | 文件名推断文/理 | 科类(第2列) |
投档线 (2017-2022 统一格式)
C1=年份, C2=学校, C9=科类(理→物理类), C10=批次, C11=最低分, C12=排名
专业分 (2017-2021 统一格式)
学校 | 科类 | 专业 | 平均分(优先) | 最低分(备选) | 最低分位次
2025 专业分 (你给的文件)
包含 school_type(公办/民办/独立学院/中外合作)、is_985、is_211 字段。
替换 2025 年 majors 数据时保留不在新文件中的 206 校旧数据。