java调用kettle动态传参修改数据库连接

浏览: 3989

感言:网络的确帮助了我们,但是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 }

复制代码

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

 

推荐 0
本文由 kingwang 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册