您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

java中调用kettle转换文件

2024/3/16 4:29:06发布16次查看
java中调用kettle转换文件 通过命令行也可以调用,然后java中调用命令行代码也可以;这样没有和java代码逻辑无缝集成。本文说明kettle5.1中如果通过其他api和java代码无缝集成;网上大多数资料都是低版本的,在kettle5.x中已经不能运行。 1、 需要哪些jar文
java中调用kettle转换文件
通过命令行也可以调用,然后java中调用命令行代码也可以;这样没有和java代码逻辑无缝集成。本文说明kettle5.1中如果通过其他api和java代码无缝集成;网上大多数资料都是低版本的,在kettle5.x中已经不能运行。
1、 需要哪些jar文件
以kettle开头的是必须,上图最下面三个也要;红色框中的两个是我测试转换用到的,分别是生成uuid和文件。
要是少了jar文件,运行程序一定报错,大家根据错误到kettle安装目录lib中找相应的jar加到编译路径中。
2、 示例说明如何通过java调用转换
示例是把一个excel的内容导入到数据中,excel只有两列,所以需要在kettle中生成一列uuid,然后导入到数据库中。
默认生成的uuid有‘-’间隔符,所以通过“replace in string”替换为空;
excel步骤,使用了命名参数,所以要在转换配置设置命名参数。
示例代码如下:
publicclass kettleutil2 { public string res_dir = res; private string fullfilename ; public kettleutil2(string filename){ fullfilename = system.getproperty(user.dir) + file.separator + res_dir; fullfilename += file.separator + filename; } /** * 没有参数是,设置参数为null * @param paras */ publicvoid runtransformation(map paras) { try { kettleenvironment.init(); transmeta transmeta = new transmeta(fullfilename); trans transformation =new trans(transmeta); for(map.entry entry: paras.entryset()) { transformation.setparametervalue(entry.getkey(), entry.getvalue()); } transformation.execute(null); transformation.waituntilfinished(); if (transformation.geterrors() > 0) { thrownew runtimeexception( there wereerrors during transformation execution.); } } catch (kettleexception e) { system.out.println(e); } }}
最后调用代码如下:
publicclass etltest { publicstaticvoid main(string[] args) { kettleutil2 etl = new kettleutil2(testimport.ktr); map para = new hashmap(); //给转换中命名参数赋值 para.put(xlsname, data); etl.runtransformation(para); }}
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product