java 调用kettle job 传参_java调用kettle向job(任务)和transformation(转换)传递参数实例...
时间: 2023-07-06 22:44:03 浏览: 31
可以通过Java程序调用Kettle的API来向Job和Transformation传递参数。以下是一个示例代码:
```java
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.variables.Variables;
import org.pentaho.di.repository.Repository;
import org.pentaho.di.repository.RepositoryDirectoryInterface;
import org.pentaho.di.repository.kdr.KettleDatabaseRepository;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
import org.pentaho.di.trans.TransParameterCodec;
import java.util.HashMap;
import java.util.Map;
public class KettleJobCaller {
public static void main(String[] args) throws KettleException {
KettleEnvironment.init();
String repositoryName = "MyRepository";
String username = "admin";
String password = "password";
String jobName = "MyJob";
String transformationName = "MyTransformation";
String[] parameters = new String[]{"param1=value1", "param2=value2"};
Repository repository = new KettleDatabaseRepository();
repository.init(repositoryName, username, password);
RepositoryDirectoryInterface directory = repository.loadRepositoryDirectoryTree().findDirectory("/my/directory");
Variables variables = new Variables();
variables.setParameters(parameters);
TransMeta transMeta = repository.loadTransformation(transformationName, directory, variables, null);
Trans trans = new Trans(transMeta);
trans.execute(null);
String[] encodedParameters = TransParameterCodec.encodeParams(parameters);
Map<String, String> paramMap = new HashMap<>();
for (String encodedParameter : encodedParameters) {
String[] split = encodedParameter.split("=");
paramMap.put(split[0], split[1]);
}
JobMeta jobMeta = repository.loadJob(jobName, directory, variables, null);
Job job = new Job(repository, jobMeta, variables);
job.setVariables(variables);
job.setParams(paramMap);
job.start();
job.waitUntilFinished();
}
}
```
在上面的示例代码中,我们首先初始化Kettle的环境,然后指定仓库名称、用户名、密码、Job名称和Transformation名称。接下来,我们将要传递的参数存储在一个字符串数组中,并将它们传递给Transformation和Job。在传递参数时,我们需要使用变量来存储它们。
最后,我们使用Kettle的API来加载Transformation和Job,并将参数传递给它们。注意,我们需要使用TransParameterCodec来编码和解码参数。
这就是如何使用Java调用Kettle Job并传递参数的示例代码。
相关推荐
















