1.为kettle创建资源库

在oracle数据库上建立资源库,双击spoon.bat进入kettle

进入如下界面,点击"+"。

kettle工具连接到mongodb kettle如何连接数据库_数据库

选择Kettle database repository选项,点击确定。

kettle工具连接到mongodb kettle如何连接数据库_数据_02

选择"新建"。

kettle工具连接到mongodb kettle如何连接数据库_kettle工具连接到mongodb_03

分别输入连接的数据库的属性,Connection name:连接名称,自己命名

Host Name:数据库地址

Database Name:数据库名

User Name和Password分别为数据库的用户名和密码

点击"Test",测试数据库是否连接成功,点击"浏览",可以查看连接数据库的表等信息。

"OK",跳转下一步。

kettle工具连接到mongodb kettle如何连接数据库_数据_04

ID和名称可以自己命名。

kettle工具连接到mongodb kettle如何连接数据库_数据库_05

点击"确定"。

kettle工具连接到mongodb kettle如何连接数据库_字段_06

设置密码。

kettle工具连接到mongodb kettle如何连接数据库_kettle工具连接到mongodb_07

点击"是"。

 

 

kettle工具连接到mongodb kettle如何连接数据库_数据库_08

最后执行跳转的界面的SQL,执行后关闭页面,跳转后的页面直接选择"确定",完成资源库的创建。

选择相应的资源库,输入密码后进入到kettle开发页面。

 

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

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

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

kettle工具连接到mongodb kettle如何连接数据库_文本文件_09

kettle工具连接到mongodb kettle如何连接数据库_字段_10

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

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

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

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

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

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

kettle工具连接到mongodb kettle如何连接数据库_文本文件_11

 

 

kettle工具连接到mongodb kettle如何连接数据库_数据库_12

 

 4.表输入、表输出

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

kettle工具连接到mongodb kettle如何连接数据库_kettle工具连接到mongodb_13

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

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

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