1. 项目概述
作为一名长期从事数据集成工作的ETL工程师,我经常需要处理各种格式的数据转换任务。最近接到一个典型的教育行业需求——学生成绩数据的管理。这个案例虽然看似简单,但完整展现了从数据导入、更新到分析输出的全流程,特别适合刚接触Kettle(现称为Pentaho Data Integration)的朋友学习。
这个项目主要解决三个实际问题:
- 将Excel格式的原始学生成绩数据导入MySQL数据库
- 根据修订表更新已有成绩记录
- 生成数学成绩的排名报表
整个流程使用了Kettle这个开源ETL工具,它通过可视化拖拽的方式构建数据处理流程,比手动编写脚本效率高得多。下面我会详细拆解每个环节的技术实现和注意事项,这些经验都来自我实际项目中踩过的坑。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础配置
2.1 工具与软件准备
在开始前,需要准备好以下环境:
- Kettle (Pentaho Data Integration): 推荐使用9.3版本,这个版本稳定且兼容性好
- MySQL数据库: 5.7或8.0版本均可
- Excel文件: 准备原始成绩表和修订表
- JDBC驱动: mysql-connector-java-5.1.49.jar(需放入Kettle的lib目录)
提示:Kettle对Java环境有要求,建议使用Java 8或11,更高版本可能会有兼容性问题。
2.2 数据库表结构设计
在MySQL中创建school数据库和score表,SQL语句如下:
sql复制CREATE DATABASE school CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE school;
CREATE TABLE score (
stu_no INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
score_math INT,
score_english INT,
score_chinese INT
);
这里有几个设计要点:
- 使用utf8mb4字符集支持完整Unicode(防止学生姓名出现生僻字)
- 学号(stu_no)设为主键,确保
