感言:网络的确帮助了我们,但是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/
英文名:kingwang
& Email :kingstudy@vip.qq.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步