King

business intelligence ,is my love。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  300 随笔 :: 0 文章 :: 117 评论 :: 168万 阅读

感言:网络的确帮助了我们,但是kettle的资料真实太少,英语学好是有必要的;

整体思路:创建javaproject→导入kettle所需要的包→实现kettle中的对象→重写对象内容→调用对象执行;

复制代码
 1 package kettle;
 2 
 3 //需要导入的包
 4 import java.util.List;
 5 import java.util.Map;
 6 import java.util.Set;
 7 
 8 import org.pentaho.di.core.KettleEnvironment;
 9 import org.pentaho.di.core.database.DatabaseMeta;
10 import org.pentaho.di.trans.Trans;
11 import org.pentaho.di.trans.TransMeta;
12 
13 import com.enfo.common.utils.StringUtils;
14 
15 
16 
17 
18 public class ExecuteLocalTran {
19     /**
20      * java调用本地的tran并且传递参数(包括给SQL传参和动态修改数据库连接)
21      * 
22      * 
23      */
24    public static void main(String arg[]) throws Exception 
25     {
26        
27        //前台页面传递的参数
28        String idname="7";//作为参数值
29        String filename="./test.ktr";//ktr路径
30        
31        String conn_name="output_dbconnection";
32        String host_name="128.8.28.124";
33        String db_name="TestWork";
34        String db_port="1433";
35        String user_name="wxj";
36        String pass_word="wxj1988";
37        
38        KettleEnvironment.init();//初始化kettle环境
39        TransMeta transMeta = new TransMeta(filename);//new tran的源数据对象
40        
41        //DatabaseMeta dm =transMeta.getDatabase(1); 
42        List<DatabaseMeta>  dmlist=transMeta.getDatabases();
43        for(DatabaseMeta dm : dmlist)
44            {
45                 String connection_name=StringUtils.trimNull(dm.getName());
46                 if(connection_name.equals(conn_name))
47                 {   
48                     dm.setHostname(host_name); //连接地址
49                     dm.setDBName(db_name); //数据库名称
50                     dm.setDBPort(db_port); //端口
51                     dm.setUsername(user_name); //用户
52                     dm.setPassword(pass_word); //密码
53                     /*
54                     System.out.println("DatabaseMeta:"+dm.getName());
55                     System.out.println("AccessType:"+dm.getAccessType());
56                     System.out.println("DatabaseName:"+dm.getDatabaseName());
57                     System.out.println("Hostname:"+dm.getHostname());
58                     System.out.println("Username:"+dm.getUsername());
59                     System.out.println("Password:"+dm.getPassword());
60                     */
61                  }
62                 
63             }
64        Trans trans = new Trans(transMeta);//创建tran对象
65        trans.setVariable("namevalue",idname);//给对象传参
66        trans.prepareExecution(null);//异常处理
67        trans.startThreads();//开始执行
68        trans.waitUntilFinished();//等待执行完毕
69        if(trans.getErrors()!=0)
70        {
71            System.out.println("Error encountered!"); 
72        }
73     }
74 
75 }
View Code
复制代码

更多参考:http://javadoc.pentaho.com/kettle/

 

posted on   kingstudy  阅读(7258)  评论(1编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示