maven+kettle调用ktr文件,与web项目集成demo

先做一个jar工程,这个工程是jdk1.7的,使用maven

说明:这个东西需要使用Spoon.bat设计转换,然后使用java调用Spoon.bat设置的demo.ktr文件

目录结构如下:

maven+kettle调用ktr文件,与web项目集成demo_第1张图片

首先需要下载kettle6,连接地址https://sourceforge.net/projects/pentaho/files/Data%20Integration/6.1/

maven+kettle调用ktr文件,与web项目集成demo_第2张图片

解压后目录结构:

maven+kettle调用ktr文件,与web项目集成demo_第3张图片

进入lib目录拷贝三个jar包,kettle-core-6.1.0.1-196.jar,kettle-engine-6.1.0.1-196.jar,metastore-6.1.0.1-196.jar

放入新建工程src/libs目录下,将这个三个依赖安装的maven本地创库

mvn install:install-file -Dfile=./kettle-core-6.1.0.1-196.jar -DgroupId=pentaho-kettle -DartifactId=kettle-core -Dversion=6.1.0.1-196 -Dpackaging=jar 

mvn install:install-file -Dfile=./kettle-engine-6.1.0.1-196.jar -DgroupId=pentaho-kettle -DartifactId=kettle-engine -Dversion=6.1.0.1-196 -Dpackaging=jar 

mvn install:install-file -Dfile=./metastore-6.1.0.1-196.jar -DgroupId=pentaho-kettle -DartifactId=metastore -Dversion=6.1.0.1-196 -Dpackaging=jar 
在然后在工程中配置如下:


	4.0.0
	com.szhis.frsoft
	hsp-plugins-mr-guangdong
	0.0.1-SNAPSHOT

	
		
		1.7
		UTF-8
		UTF-8

		
		6.1.0.1-196
	

	
		
			commons-codec
			commons-codec
			1.9
		
		
			commons-lang
			commons-lang
			2.6
		
		
			commons-logging
			commons-logging
			1.1.3
		
		
			org.apache.commons
			commons-vfs2
			2.0
			
				
					commons-logging
					commons-logging
				
			
		
		
			com.google.guava
			guava
			17.0
		
		
		
			pentaho-kettle
			kettle-core
			${kettle.version}
		
		
			pentaho-kettle
			kettle-engine
			${kettle.version}
		
		
			pentaho-kettle
			metastore
			${kettle.version}
		
		
		
			net.sourceforge.jtds
			jtds
			1.3.0
		
		
			mysql
			mysql-connector-java
			5.1.40
		
		
		
			junit
			junit
			4.12
			test
		
	

	
	
		
		
			
			
				org.apache.maven.plugins
				maven-compiler-plugin
				3.1
				
					1.7
					1.7
					UTF-8
				
			
			
			
				org.apache.maven.plugins
				maven-surefire-plugin
				2.18.1
				
					true
				
			
		
	


java运行测试代码

package com.szhis.frsoft.demo1;

import org.junit.Test;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;

public class TransferTest {

	@Test
	public void test_helloWorld() {
		String project_path = getFilePath();
		//        String filename = "demo1/demo1.ktr";
		String filename = "demo1/demo-ssl.ktr";
		filename = project_path + filename;
		// 调用转换
		try {
			transfer(filename);
		} catch (KettleException e) {
			e.printStackTrace();
		}
	}

	public void transfer(String filename) throws KettleException {
		KettleEnvironment.init();
		TransMeta tm = new TransMeta(filename);
		Trans trans = new Trans(tm);
		// 空参调用
		trans.execute(null);
		trans.waitUntilFinished();
	}

	// 获得文件绝对地址(项目绝对地址+我的文件相对项目的地址)
	private String getFilePath() {
		String absolute = this.getClass().getClassLoader().getResource("").getPath();
		if (absolute.startsWith("/")) {
			absolute = absolute.substring(1);
		}
		return absolute;
	}

	@Test
	public void test_path() {
		String filePath = getFilePath();
		System.out.println("我的控制台输出");
		System.out.println(filePath);
	}

}

在看一下项目结构

maven+kettle调用ktr文件,与web项目集成demo_第4张图片

kettle设置文件界面

maven+kettle调用ktr文件,与web项目集成demo_第5张图片

数据库数据

maven+kettle调用ktr文件,与web项目集成demo_第6张图片

maven+kettle调用ktr文件,与web项目集成demo_第7张图片

注意这个两张表的结构是不一样的,本案例仅提供参考

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(etl,kettle)