-- 学生操行分历史数据迁移 - 临时表创建脚本 -- 执行时间:2025-01-XX -- 执行人:系统管理员 -- =========================================== -- 临时表1:存储Excel原始数据 -- =========================================== DROP TABLE IF EXISTS temp_conduct_score_import; CREATE TABLE temp_conduct_score_import ( id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', student_no VARCHAR(50) NOT NULL COMMENT '学号', student_name VARCHAR(100) COMMENT '姓名', gender VARCHAR(10) COMMENT '性别', ethnicity VARCHAR(50) COMMENT '民族', academic_year_str VARCHAR(20) NOT NULL COMMENT '原始学年(2015-2016)', semester_str VARCHAR(20) NOT NULL COMMENT '原始学期(第一学期/第二学期)', monthly_scores TEXT NOT NULL COMMENT '平时分数(一月:90,九月:85...)', final_score DECIMAL(5,2) COMMENT '最终分', grade_level VARCHAR(20) COMMENT '等级', department VARCHAR(100) COMMENT '院系', major VARCHAR(100) COMMENT '专业', class_name VARCHAR(100) COMMENT '班级', grade VARCHAR(20) COMMENT '年级', import_status VARCHAR(20) DEFAULT 'pending' COMMENT '导入状态(pending/processing/parsed/error)', error_msg TEXT COMMENT '错误信息', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', INDEX idx_student_no (student_no), INDEX idx_import_status (import_status), INDEX idx_create_time (create_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生操行分Excel数据临时表'; -- =========================================== -- 临时表2:解析后的月度分数中间表 -- =========================================== DROP TABLE IF EXISTS temp_conduct_score_parsed; CREATE TABLE temp_conduct_score_parsed ( id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', temp_id BIGINT NOT NULL COMMENT '关联临时表ID', -- Excel原始字段(用于追溯) student_no VARCHAR(50) NOT NULL COMMENT '学号', academic_year_str VARCHAR(20) NOT NULL COMMENT '原始学年', semester_str VARCHAR(20) NOT NULL COMMENT '原始学期', -- 解析后字段 academic_year INT NOT NULL COMMENT '学年', semester TINYINT NOT NULL COMMENT '学期(1/2)', month TINYINT NOT NULL COMMENT '月份(1-12)', score DECIMAL(5,2) NOT NULL COMMENT '月度分数', -- 系统关联字段 student_id BIGINT COMMENT '学生ID', class_id BIGINT COMMENT '班级ID', class_teacher_id BIGINT COMMENT '班主任ID', -- 扩展字段 remark VARCHAR(500) COMMENT '备注信息', processing_status VARCHAR(20) DEFAULT 'parsed' COMMENT '处理状态(parsed/linked/imported/error)', error_msg TEXT COMMENT '错误信息', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', -- 索引优化 INDEX idx_temp_id (temp_id), INDEX idx_student_no (student_no), INDEX idx_processing_status (processing_status), INDEX idx_academic_year_semester (academic_year, semester), INDEX idx_student_year_semester_month (student_no, academic_year, semester, month), INDEX idx_create_time (create_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生操行分解析后中间表'; -- =========================================== -- 迁移日志表(可选,用于记录详细的迁移过程) -- =========================================== DROP TABLE IF EXISTS temp_conduct_score_migration_log; CREATE TABLE temp_conduct_score_migration_log ( id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', script_name VARCHAR(100) NOT NULL COMMENT '脚本名称', operation VARCHAR(100) NOT NULL COMMENT '操作类型', record_count INT DEFAULT 0 COMMENT '处理记录数', success_count INT DEFAULT 0 COMMENT '成功数', error_count INT DEFAULT 0 COMMENT '失败数', error_details TEXT COMMENT '错误详情', start_time DATETIME NOT NULL COMMENT '开始时间', end_time DATETIME COMMENT '结束时间', duration_seconds INT COMMENT '耗时(秒)', status VARCHAR(20) DEFAULT 'running' COMMENT '状态(running/success/error)', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', INDEX idx_script_operation (script_name, operation), INDEX idx_status (status), INDEX idx_create_time (create_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操行分迁移日志表';