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

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

java调用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/

 

你可能感兴趣的:(Kettle)