首页 > 代码库 > 工作中简单的kettle使用
工作中简单的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使用