(一) 使用kettle完成学生成绩登记需求
学生成绩表下表所示。(自己创建一个学生表)
-
在MySQL中创建一个名为school的数据库,并在school数据库中创建一个名为score的表,使用Kettle将Excel形式的学生成绩表导入MySQL的score表
1)在windows中启动mysql
win+r--->输入cmd---->在小黑窗输入mysql -u root -p---->输入自己设置的密码
2)创建school数据库和score01表的代码如下
create database school;
use school;
CREATE TABLE score(
stu_no int,
name varchar(10),
score_math int,
score_english int,
score_chinese int
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
3)使用kettle将学生成绩表导入到数据库中。
使用excel输入和表输出控件,配置如下:
对excel输入,首先要绑定输入文件,如图1所示,其次在字段页面中获取头部数据的字段,并对识别错误的数据类型进行修改,如图所示。
对于表输出控件,首先需要配置数据库连接,然后选择目标表,最后获取数据库字段,并做好流内字段对表字段的映射。如图所示
配置完成后,就可以点击左上角转换按钮进行转换。
最后在数据库中执行查询语句就能看到插入的结果,如下图所示。
4)、现在发现有些同学的成绩登记错误,经统计得到一个成绩修订表
为了完成这个任务,我们需要使用到的控件有Excel输入、排序记录、列转行、过滤记录、插入/更新,具体布局如下图所示,其中由列转行控件到过滤记录控件这一节点连接,应选择复制记录。
其中EXCEL输入控件配置类似图前面第一问的。之所以需要排序记录控件,是因为列转行控件要求流中的数据必须有序。
排序记录控件配置如图6所示:
过滤记录控件配置如图所示:
插入/更新控件配置如图所示,首先需要建立数据库连接,其次选择目标表,接着选择用来查询的字段并选择比较方式,最后配置需要更新的字段,只将需要更新字段的更新状态选择为Y即可。这里只以数学成绩的更新为例,英语与语文同理。
配置完成后,就可以点击左上角转换按钮进行转换。最后在数据库中执行查询语句就能看到插入的结果,如下图所示。可以看出学生成绩已经按照登记表进行了更新。
5)、数学老师想要一份只有数学成绩的排名表,请你帮他这个忙。
为了完成这个任务,我们需要使用到的控件有Excel输入、字段选择,排序记录、增加序列及Excel输出。具体布局如下图所示。
表输入控件配置如下图所示,第一步要新建数据库连接,其次点击获取SQL查询语句按钮选择score表。
字段选择控件配置如下图所示,首先要获取选择的字段,导出所有字段,在这里可以进行字段的改名,跟图上面一样。接着点击左上角移除,选择score_english和score_chinese字段,表示放弃这两个字段,如图所示。
排序记录控件的配置跟上面类似,选择数学字段按降序进行排序。
增加序列控件的配置如图所示:
Excel输出控件配置如下图所示,首先选择需要保存的文件,接着将扩展名清空,这是目前该控件存在的一点小问题,会导致有两个后缀。最后选择右上角字段页面,将对应Integer类型的格式改为0,避免排名学号等数据出现小数点。
配置完成后,就可以点击左上角转换按钮进行转换。转换后,可以在相应路径找到文件,结果如下图所示: