1.为kettle创建资源库
在oracle数据库上建立资源库,双击spoon.bat进入kettle
进入如下界面,点击"+"。
选择Kettle database repository选项,点击确定。
选择"新建"。
分别输入连接的数据库的属性,Connection name:连接名称,自己命名
Host Name:数据库地址
Database Name:数据库名
User Name和Password分别为数据库的用户名和密码
点击"Test",测试数据库是否连接成功,点击"浏览",可以查看连接数据库的表等信息。
"OK",跳转下一步。
ID和名称可以自己命名。
点击"确定"。
设置密码。
点击"是"。
最后执行跳转的界面的SQL,执行后关闭页面,跳转后的页面直接选择"确定",完成资源库的创建。
选择相应的资源库,输入密码后进入到kettle开发页面。
2.txt文本文件数据输入到数据库表中:
表输入用于动态的获取文件路径,文件路径假定为由日期动态确定。Set Variables用于将filename设置为变量,文件目录设为变量${filename},具体见下图。
表输出设置,设置好目标表所在库以及目标表后,点击Enter Field mapping,将流中的字段与目标表中字段一一对应,因为filename也属于流中的字段,所以,我在目标表中新增了相应的filename字段,如果没有filename字段的话,会报错。
3.另一种文本文件输入,利用Fixed Field Input。
使用这种方法是因为文件中中文太多,使用文本文件输入的话会导致字符位置混乱,初次使用,我无法解决。
对于固定长度的数据输入,其中的以字节数表示的行宽度填写一行数据的总长度。一行数据即一条记录的长度查看,可以用UE打开文件,查找'^R'确定,具体长度在点击获取字段后重新确定。
点击获取字段后,产生如下图所示的格式后,即可确定长度正确。然后在字段设置页面中,根据接口文档中对应表的字段个数划分相同个数的字段,先不用确定这些字段的长度,点击finish。
然后根据接口中的字段属性设置字段名称,类型,长度。点击预览,查看结果,中文有没有错位,以及每个字段的内容用没有出错。如果产生中文字段错位的话,再到Fixed Width Fields entry页面稍微变换一下字段长度,最终设置好相应的字段属性。
表输出的设置与文本文件输入的方法一样。
4.表输入、表输出
在表输入中输入数据查询的SQL语句,对于不要查询或者查询不到的目标表相应的字段,置为空,并且重命名为目标表字段的名称。即是,流中要包含目标表中所有字段的对应字段,测试缺少字段的话会报错,不知为何。
其中的未能彻底解决的问题:
1.对于数值型,NUMBER类型的数据小数位数的设置,假设NUMBER(6,4)的数据,在文本文件输入或者Fixed File Input中设置好后,相应的数据仍然不会是正确的小数位数。
2.文本文件路径的动态设置