一、转换
转换是ETL解决方案中的主要组成部分之一,主要用于数据的抽取、转换以及加载等操作,其本质是一组图形化的是数据转换配置的逻辑结构。
下面是实现转换的步骤:
1、数据准备
创建一个数据库personal,再建表personal_a和personal_b,其中a表是有数据的,b表是只有表头的空表。
2、创建转换
Kettle是绿色无需安装的软件,首先双击Kettle目录下的Spoon.bat脚本,启动工具。打开后,在工具栏“文件”处新建一个转换,保存并修改名字。然后,从核心对象中将“表输入”控件、“JavaScript代码”控件、“插入/更新控件”控件拖拽到kettle工作区,用左键分别圈住相邻两个控件右键连接,效果如图1-1所示。
图1-1 创建转换
3、配置控件
双击进入“表输入”控件,进入界面(图1-2)点击新建,按照图1-3配置数据库,配置完测试一下看看是否成功连接,若成功,按“确定”。
图1-2 “表输入”界面
图1-3 MySQL数据库连接配置
之后点击“获取SQL查询语句...”,在“表”菜单下选择personal_a,点“确定”再点“是”,最终“表输入”界面配置如图1-4。
图1-4 “表输入”界面配置最终结果
同样的方法,双击“JavaScript”控件打开界面,在代码窗口编写JavaScript脚本代码,然后单击“获取变量”按钮,在字段窗口的“改名为”字段处添加新的字段名称username,具体如图1-5所示。
图1-5 配置“JavaScript代码”控件
让我们对“插入/更新”控件来一次熟悉的双击,同样进入页面点新建,如图1-6配置对照配置,然后点击浏览,选择菜单“personal_b”。
图1-6 MySQL数据库连接配置
一顿确定,我们回到了“插入/更新”界面,目标表是personal_b(自查一下),然后点击获取字段如图1-7修改。
图1-7 “插入/更新”界面
改完后,再左下角点击“编辑映射”,如图1-8选择并确定。
图1-8 映射匹配界面
配置完成图如图1-9,点击确定。
图1-9 “插入/更新”界面
4、运行转换并查看数据
最后单击工作区的三角标志,运行转换,运行成功如1-10所示,然后进入mysql的工作台查看personal_b的表,此时,表格personal_a的内容以及转换到表格personal_b,如图1-11所示。
图1-10 运行转换field_stitching
图1-11 表格personal_b
二、作业
在kettle工具中,作业管理主要包括通用、邮件、文件管理、条件、脚本、批量加载等功能。本次实例是使用kettle发送邮件。
1、创建作业
创建一个作业send_email,并添加Start控件、“发送邮件”控件、“成功”控件然后连接起来,如图2-1。
图2-1 创建作业send_email
2、配置控件
首先,双击进入Start控件,进入“作业定时调度”界面,配置如图2-2,然后点击确定。
图2-2 “作业定时调度”界面
之后双击“发送邮件”控件,进入界面。“地址”下填写收件人和发件人地址、发件人回复名称(填写地址时一定要注意,不要不小心填写时多一个空格,会发送失败)。然后点击“服务器”,邮件服务器与发件人账号一一对应,若发件人邮箱是qq邮箱,其SMTP服务器和端口号为smtp.qq.com和465或587;若发件人邮箱是163邮箱,其SMTP服务器和端口号为smtp.163.com和25,其它邮箱本人没有试过,请自行查阅。
用户名填写发件人邮箱,密码是smtp的授权码,这里有说一下,使用kettle发送邮件前需要开启IMAP/SMTP服务并获得,qq邮箱在设置-账户里找,163在左侧列表直接找。
本人建议发件人不要用163邮箱,因为本人使用163发送邮件,kettle显示发送成功,但对方并未收到,测试两次结果都是如此,友人使用163邮箱发送邮件,碰到了同样的问题。具体原因参考我在网上搜到的一篇博客:邮件发送成功而对方却收不到的几种可能 - 邶风依旧 - 博客园
点击“邮件设置”,勾选“信息里带日期?”和“使用HTML邮件格式?”复选框。在消息栏添加邮件主题和注释,这里填写内容你自己随意,如图2-3所示。
图2-3 “邮件信息”界面
然后点击确定。
3、运行send_email作业
单击三角按钮运行作业如2-4所示,若有问题,查看错误提示并改正;无问题,找收件人查看是否收到邮件。
图2-4 运行send_email作业
4、查看邮件收件箱
这次本人使用的是qq邮箱,没什么问题,对方收到邮件如图2-5所示。
图2-5 收件箱信件
实验参考:《数据清洗》黑马程序员/编著