需求:通过kettle配置数据转换失败的日志记录.
解决方法:通过表输入、表输出、文本文件输出等组件完成该功能.
注: 其它案例详见 ETL-Kettle专栏, Kettle 50个脚本(代码)
1) 配置数据库连接,这里输入连接名、主机名称、数据库名称、数据库用户名、密码等数据库的基本信息

2) 新建立个转换,或者通过快捷键Ctrl+N建立

3) 在核心对象里找到输入这个分类,然后下拉找到表输入组件


4)定位到表输入这个组件并将其拖放到右边的面板中

5)双击表入组件,对组件相应内容进行修改

6)创建验证表tb_kettle并插入数据后修改表输入组件中SQL的内容见下截图示意:
CREATE TABLE `tb_kettle` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '元数据标识',
`name` varchar(100) DEFAULT NULL COMMENT '姓名',
`birthday` date DEFAULT NULL COMMENT '出生日期',
`des` varchar(6) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULTCHARSET=utf8;
INSERT INTO tb_kettle(name, birthday, des)
VALUES ('Tom', '1988/3/23 0:00:00', 'good');
INSERT INTO tb_kettle(name, birthday, des)
VALUES ('Tim', '1978/2/16 0:00:00', 'nice');
INSERT INTO tb_kettle(name, birthday, des)
VALUES ('Kate', '1968/6/24 0:00:00', 'badguy');
INSERT INTO tb_kettle(name, birthday, des)
VALUES ('Mike', '1998/3/13 0:00:00', 'badman');

7)我们先定义好要输出的表结构,这里为了演示错误处理的过程,故意将des字段定义短了些,见如下SQL语句.
CREATE TABLE `tb_kettle_out` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '元数据标识',
`name` varchar(100) DEFAULT NULL COMMENT '姓名',
`birthday` date DEFAULT NULL COMMENT '出生日期',
`des` varchar(4) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
注:此步可直接在数据库里执行,也可以在表输入组件里执行该DDL.
7)同理找到输出这个分类并找到表输出这个组件,然后拖到右边面板中.这时需要做个动作:点击表输入组件,按住SHIFT键,将表输入和表输出连接起来,见下图所示:

8)双击表输出组件,选择要输出的表,如果tb_kettle_out已经在数据库里建好则只需要选择即可,如果还未创建,可以参照步骤9

9)如果想在表输入时执行DDL,可参见下面的步骤,先双击表输出组件,在选中表后执行DDL,详细步骤见下图所示:


10)同理拖动一个文本文件输出组件并将表输出和其连接,这里选择错误处理步骤

11)右击表输出,选中定义错误处理选项并定义错误相关的字段名称,具体见下图:


12)右击文本文件输出,设置错误文件要输出的字段,具体设置见下图:


13)运行转换并验证执行结果

打开错误文本文件不难发现tb_kettle里的4条记录有2条在错误日志内:

同时查看tb_kettle_out不难发现进来了2条记录.

1149

被折叠的 条评论
为什么被折叠?



