利用kettle组件导入excel文件到数据库
利用kettle组件导入excel文件到数据库
1. 实现目标
把excel文件内容导入到目标表中;然后用java调用kettle的转换。excel文件的内容仅仅有两列,示比例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmV3ZWFzdHN1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
数据库表的结构例如以下:
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脚步步骤。例如以下图:
3.2. 配置步骤
配置excel步骤
双击excel步骤,打开配置对话框:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmV3ZWFzdHN1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
配置数据库连接
记得把oracle的jdbc驱动加到kettle的lib文件夹中。能够測试连接。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmV3ZWFzdHN1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
配置运行sql脚步步骤
双击该步骤打开配置。首先选择前面配置的数据库连接。然后写insert语句。
须要注意的是字符类型要用引號括起来,即使是变量或?都须要括起来。
问号的内容须要在parameters中配置相应的流字段。
由于须要运行多行,须要选中Execute for each row
选项;
由于有变量,须要选中Variable substutution选项;
3.3. 配置參数
前面分析了须要四个參数,分别在两个步骤使用到了。所以须要给转换配置四个命名參数:
USER_ID、ORG_ID、FILE_ID、FILE_NAME;
双击工作区空白部分打开转换配置。输入对应的參数,也能够加入默认值,用于在kettle中进行測试使用,直到測试没有错误。
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调用转换
调用之前,须要准备上述四个參数的内容,然后把參数传给转换运行。具体内容參考这篇博客文章:
利用kettle组件导入excel文件到数据库的更多相关文章
- Java 导入Excel文件到数据库
原文:http://www.jb51.net/article/44021.htm 项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两 ...
- Apache POI 一键上传(导入excel文件到数据库)
import cn.XXXX.bos.utils.PinYin4jUtils; import org.apache.commons.lang3.StringUtils; // HSSF:操作07版本之 ...
- springMVC(5)---导入excel文件数据到数据库
springMVC(5)---导入excel文件数据到数据库 上一篇文章写了从数据库导出数据到excel文件,这篇文章悄悄相反,写的是导入excel文件数据到数据库.上一篇链接:springMVC(4 ...
- 【转】 如何导入excel数据到数据库,并解决导入时间格式问题
在办公环境下,经常会用到处理excel数据,如果用写程序导入excel数据到数据库那就太麻烦了,涉及解析excel,还要各种格式问题,下面简单利用数据库本身支持的功能解决这类导入问题. 准备 创建表 ...
- Spring Boot下的一种导入Excel文件的代码框架
1.前言 Spring Boot下如果只是导入一个简单的Excel文件,是容易的.网上类似的文章不少,有的针对具体的实体类,代码可重用性不高:有的利用反射机制或自定义注解,开发了Excel导入工具 ...
- .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)
.Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构) public cl ...
- phpexcel导入excel文件报the filename xxx is not recognised as an OLE file错误。
工作中频繁会用phpexcel类导入excel文件的数据到数据库,目前常用的excel文件格式有:xls.csv.xlsx. 刚开始,针对xls文件,使用如下程序,能正常运行: $objReader ...
- excel数据 入库mysql 和 mysql数据 导入excel文件
1.excel数据入库mysql 首先准备excel文件, 标红的地方需要留意,一个是字段名所在行,一个表名对应页: 然后私用mysql工具 navicat, 选择数据库,然后导入文件, 选中相应ex ...
- java后端导入excel模板和导入excel文件去读数据
模板转载地址:https://www.cnblogs.com/zhangyangtao/p/9802948.html 直接上代码(我是基于ssm写的demo,导入文件目前只能读取.xls后缀的exce ...
随机推荐
- 【ORACLE】oracl基本操作笔记
1.用命令导入导出表 C:\Users\xiang>imp bjlims/bjlims@orcl file="c:\tjlims.dmp" full=y C:\Users\x ...
- Nuts & Bolts Problem
Given a set of n nuts of different sizes and n bolts of different sizes. There is a one-one mapping ...
- RESTful 个人理解总结【转】
转自:http://www.cnblogs.com/wang-yaz/p/9237981.html 一.什么是RESTful 面向资源 简单的说:RESTful是一种架构的规范与约束.原则,符合这种规 ...
- linux系统下安装nginx
1.第一步:获取nginx的安装包 wget http://nginx.org/download/nginx-1.7.8.tar.gz 2.解压安装包tar -xvf nginx-1.7.8.tar. ...
- 初始ASP.NET数据控件【续 ListView】
ListView控件 ListView控件可以用来显示数据,它还提供编辑,删除,插入,分页与排序等功能.ListView是GridView与DataList的融合体,它具有GridView控件编辑 ...
- android 8.0变更
Android 8.0 行为变更 Android 8.0 除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更.本文重点介绍您应该了解并在开发应用时加以考虑的一些主要变更. 其中大部分变 ...
- intellij 出现“Usage of API documented as @since 1.8+”的解决办法
intellij 出现“Usage of API documented as @since 1.8+”的解决办法 Usage of API documented as @since 1.8+ This ...
- laravel 5.1 Model 属性详解
<?php namespace Illuminate\Database\Eloquent; /** * 下面提到某些词的含义: * 1.覆盖: 在继承该类 \Illuminate\Databas ...
- HTML5+ App开发入门
HTML5 Plus应用概述 HTML5 Plus移动App,简称5+App,是一种基于HTML.JS.CSS编写的运行于手机端的App,这种App可以通过扩展的JS API任意调用手机的原生能力,实 ...
- 玲珑OJ 1129 - 喵哈哈村的战斗魔法师丶坏坏い月
1129 - 喵哈哈村的战斗魔法师丶坏坏い月 Time Limit:3s Memory Limit:256MByte Submissions:315Solved:71 DESCRIPTION 坏坏い月 ...