java調用kettle動態傳參修改數據庫連接


感言:網絡的確幫助了我們,但是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/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM