create_temp_tables.sql 4.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. -- 学生操行分历史数据迁移 - 临时表创建脚本
  2. -- 执行时间:2025-01-XX
  3. -- 执行人:系统管理员
  4. -- ===========================================
  5. -- 临时表1:存储Excel原始数据
  6. -- ===========================================
  7. DROP TABLE IF EXISTS temp_conduct_score_import;
  8. CREATE TABLE temp_conduct_score_import (
  9. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
  10. student_no VARCHAR(50) NOT NULL COMMENT '学号',
  11. student_name VARCHAR(100) COMMENT '姓名',
  12. gender VARCHAR(10) COMMENT '性别',
  13. ethnicity VARCHAR(50) COMMENT '民族',
  14. academic_year_str VARCHAR(20) NOT NULL COMMENT '原始学年(2015-2016)',
  15. semester_str VARCHAR(20) NOT NULL COMMENT '原始学期(第一学期/第二学期)',
  16. monthly_scores TEXT NOT NULL COMMENT '平时分数(一月:90,九月:85...)',
  17. final_score DECIMAL(5,2) COMMENT '最终分',
  18. grade_level VARCHAR(20) COMMENT '等级',
  19. department VARCHAR(100) COMMENT '院系',
  20. major VARCHAR(100) COMMENT '专业',
  21. class_name VARCHAR(100) COMMENT '班级',
  22. grade VARCHAR(20) COMMENT '年级',
  23. import_status VARCHAR(20) DEFAULT 'pending' COMMENT '导入状态(pending/processing/parsed/error)',
  24. error_msg TEXT COMMENT '错误信息',
  25. create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  26. update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  27. INDEX idx_student_no (student_no),
  28. INDEX idx_import_status (import_status),
  29. INDEX idx_create_time (create_time)
  30. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生操行分Excel数据临时表';
  31. -- ===========================================
  32. -- 临时表2:解析后的月度分数中间表
  33. -- ===========================================
  34. DROP TABLE IF EXISTS temp_conduct_score_parsed;
  35. CREATE TABLE temp_conduct_score_parsed (
  36. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
  37. temp_id BIGINT NOT NULL COMMENT '关联临时表ID',
  38. -- Excel原始字段(用于追溯)
  39. student_no VARCHAR(50) NOT NULL COMMENT '学号',
  40. academic_year_str VARCHAR(20) NOT NULL COMMENT '原始学年',
  41. semester_str VARCHAR(20) NOT NULL COMMENT '原始学期',
  42. -- 解析后字段
  43. academic_year INT NOT NULL COMMENT '学年',
  44. semester TINYINT NOT NULL COMMENT '学期(1/2)',
  45. month TINYINT NOT NULL COMMENT '月份(1-12)',
  46. score DECIMAL(5,2) NOT NULL COMMENT '月度分数',
  47. -- 系统关联字段
  48. student_id BIGINT COMMENT '学生ID',
  49. class_id BIGINT COMMENT '班级ID',
  50. class_teacher_id BIGINT COMMENT '班主任ID',
  51. -- 扩展字段
  52. remark VARCHAR(500) COMMENT '备注信息',
  53. processing_status VARCHAR(20) DEFAULT 'parsed' COMMENT '处理状态(parsed/linked/imported/error)',
  54. error_msg TEXT COMMENT '错误信息',
  55. create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  56. update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  57. -- 索引优化
  58. INDEX idx_temp_id (temp_id),
  59. INDEX idx_student_no (student_no),
  60. INDEX idx_processing_status (processing_status),
  61. INDEX idx_academic_year_semester (academic_year, semester),
  62. INDEX idx_student_year_semester_month (student_no, academic_year, semester, month),
  63. INDEX idx_create_time (create_time)
  64. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生操行分解析后中间表';
  65. -- ===========================================
  66. -- 迁移日志表(可选,用于记录详细的迁移过程)
  67. -- ===========================================
  68. DROP TABLE IF EXISTS temp_conduct_score_migration_log;
  69. CREATE TABLE temp_conduct_score_migration_log (
  70. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
  71. script_name VARCHAR(100) NOT NULL COMMENT '脚本名称',
  72. operation VARCHAR(100) NOT NULL COMMENT '操作类型',
  73. record_count INT DEFAULT 0 COMMENT '处理记录数',
  74. success_count INT DEFAULT 0 COMMENT '成功数',
  75. error_count INT DEFAULT 0 COMMENT '失败数',
  76. error_details TEXT COMMENT '错误详情',
  77. start_time DATETIME NOT NULL COMMENT '开始时间',
  78. end_time DATETIME COMMENT '结束时间',
  79. duration_seconds INT COMMENT '耗时(秒)',
  80. status VARCHAR(20) DEFAULT 'running' COMMENT '状态(running/success/error)',
  81. create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  82. INDEX idx_script_operation (script_name, operation),
  83. INDEX idx_status (status),
  84. INDEX idx_create_time (create_time)
  85. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操行分迁移日志表';