利用kettle组件导入excel文件到数据库

时间:2023-03-09 00:14:43
利用kettle组件导入excel文件到数据库

利用kettle组件导入excel文件到数据库

1.     实现目标

把excel文件内容导入到目标表中;然后用java调用kettle的转换。excel文件的内容仅仅有两列,示比例如以下:

利用kettle组件导入excel文件到数据库

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmV3ZWFzdHN1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

数据库表的结构例如以下:

利用kettle组件导入excel文件到数据库

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmV3ZWFzdHN1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

2.     设计分析

  • 使用oracle函数解决上图黄色行的字段:两个uuid和两个系统日期;

须要生成uuid,这个在oracle中能够利用SYS_UUID()函数实现;

须要生成当前时间作为创建时间和改动时间,使用oracle的to_char(sysdate,’yyyy-MM-dd hh:mm:ss’)实现。

  • 使用命名參数解决蓝色行字段

创建人及改动人的ID(两者一致)、组织ID、来源文件的ID;分别使用命名參数:

${USER_ID}、${ORG_ID}、${FILE_ID}、${FILE_NAME};

当中文件名是读取excel步骤要使用的;

  • 使用excel行内容作为绿色行的值

即企业名称和组织机构代码两个字段;

  • 使用默认值作为白色行的值

3.     设计kettle的转换文件

使用excel输入步骤读取excel内容,使用运行sql脚步步骤把记录插入数据表中。

3.1.            设计步骤

从输入类别中拖动excel input步骤到工作区,从脚步类别中拖动运行sql
脚步到工作区。按shift键。从excel input步骤连接到sql脚步步骤。例如以下图:

利用kettle组件导入excel文件到数据库

3.2.            配置步骤

  • 配置excel步骤

双击excel步骤,打开配置对话框:

利用kettle组件导入excel文件到数据库

利用kettle组件导入excel文件到数据库

利用kettle组件导入excel文件到数据库

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmV3ZWFzdHN1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

  • 配置数据库连接

记得把oracle的jdbc驱动加到kettle的lib文件夹中。能够測试连接。

利用kettle组件导入excel文件到数据库

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmV3ZWFzdHN1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

  • 配置运行sql脚步步骤

双击该步骤打开配置。首先选择前面配置的数据库连接。然后写insert语句。

须要注意的是字符类型要用引號括起来,即使是变量或?都须要括起来。

问号的内容须要在parameters中配置相应的流字段。

由于须要运行多行,须要选中Execute for each row
选项;

由于有变量,须要选中Variable substutution选项;

利用kettle组件导入excel文件到数据库

3.3.            配置參数

前面分析了须要四个參数,分别在两个步骤使用到了。所以须要给转换配置四个命名參数:      
USER_ID、ORG_ID、FILE_ID、FILE_NAME;

双击工作区空白部分打开转换配置。输入对应的參数,也能够加入默认值,用于在kettle中进行測试使用,直到測试没有错误。

利用kettle组件导入excel文件到数据库

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmV3ZWFzdHN1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

至此,在kettle的设计工作已经做完。大家能够參考这篇博客文章,关于动态查询的具体说明。地址:http://blog.csdn.net/neweastsun/article/details/39287809

4.     在java调用转换

调用之前,须要准备上述四个參数的内容,然后把參数传给转换运行。具体内容參考这篇博客文章:

http://blog.csdn.net/neweastsun/article/details/40886841