利用kettle组件导入excel文件到数据库
利用kettle组件导入excel文件到数据库
1. 实现目标
把excel文件内容导入到目标表中;然后用java调用kettle的转换。excel文件的内容只有两列,示例如下:
数据库表的结构如下:
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脚步步骤。如下图:
3.2. 配置步骤
-
配置excel步骤
双击excel步骤,打开配置对话框:
-
配置数据库连接
记得把oracle的jdbc驱动加到kettle的lib目录中,可以测试连接。
-
配置执行sql脚步步骤
双击该步骤打开配置,首先选择前面配置的数据库连接,然后写insert语句。需要注意的是字符类型要用引号括起来,即使是变量或?都需要括起来。
问号的内容需要在parameters中配置对应的流字段;
因为需要执行多行,需要选中Execute for each row 选项;
因为有变量,需要选中Variable substutution选项;
3.3. 配置参数
前面分析了需要四个参数,分别在两个步骤使用到了,所以需要给转换配置四个命名参数: USER_ID、ORG_ID、FILE_ID、FILE_NAME;
双击工作区空白部分打开转换配置,输入相应的参数,也可以添加默认值,用于在kettle中进行测试使用,直到测试没有错误。
至此,在kettle的设计工作已经做完,大家可以参考这篇博客文章,关于动态查询的详细说明,地址: http://blog.csdn.net/neweastsun/article/details/39287809;
4. 在java调用转换
调用之前,需要准备上述四个参数的内容,然后把参数传给转换执行;详细内容参考这篇博客文章:
http://blog.csdn.net/neweastsun/article/details/40886841