工作中简单的kettle使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工作中简单的kettle使用相关的知识,希望对你有一定的参考价值。

1.txt文本文件数据输入到数据库表中:

表输入用于动态的获取文件路径,文件路径假定为由日期动态确定。Set Variables用于将filename设置为变量,文件目录设为变量${filename},具体见下图。

表输出设置,设置好目标表所在库以及目标表后,点击Enter Field mapping,将流中的字段与目标表中字段一一对应,因为filename也属于流中的字段,所以,我在目标表中新增了相应的filename字段,如果没有filename字段的话,会报错。

技术分享

技术分享

2.另一种文本文件输入,利用Fixed Field Input。

使用这种方法是因为文件中中文太多,使用文本文件输入的话会导致字符位置混乱,初次使用,我无法解决。

对于固定长度的数据输入,其中的以字节数表示的行宽度填写一行数据的总长度。一行数据即一条记录的长度查看,可以用UE打开文件,查找‘^R‘确定,具体长度在点击获取字段后重新确定。

点击获取字段后,产生如下图所示的格式后,即可确定长度正确。然后在字段设置页面中,根据接口文档中对应表的字段个数划分相同个数的字段,先不用确定这些字段的长度,点击finish。

然后根据接口中的字段属性设置字段名称,类型,长度。点击预览,查看结果,中文有没有错位,以及每个字段的内容用没有出错。如果产生中文字段错位的话,再到Fixed Width Fields entry页面稍微变换一下字段长度,最终设置好相应的字段属性。

表输出的设置与文本文件输入的方法一样。

技术分享

 

 技术分享

 

 3.表输入、表输出

在表输入中输入数据查询的SQL语句,对于不要查询或者查询不到的目标表相应的字段,置为空,并且重命名为目标表字段的名称。即是,流中要包含目标表中所有字段的对应字段,测试缺少字段的话会报错,不知为何。

技术分享

其中的未能彻底解决的问题:

1.对于数值型,NUMBER类型的数据小数位数的设置,假设NUMBER(6,4)的数据,在文本文件输入或者Fixed File Input中设置好后,相应的数据仍然不会是正确的小数位数。

2.文本文件路径的动态设置

 

以上是关于工作中简单的kettle使用的主要内容,如果未能解决你的问题,请参考以下文章

kettle教程 简单入门kettle简单插入与更新。打开kettle

Kettle数据同步和抽取

基于现在接触的ETL工具(datax和kettle)做个小总结

Kettle系列:使用Kudu API插入数据到Kudu中

kettle学习 安装部署简单使用

Kettle进行数据迁移(ETL)