kettle的java工具类
时间: 2023-09-03 16:12:44 浏览: 57
以下是一个使用Java编写的Kettle工具类示例:
```java
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.exception.KettleDatabaseException;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.plugins.PluginRegistry;
import org.pentaho.di.job.Job;
import org.pentaho.di.job.JobMeta;
import org.pentaho.di.repository.Repository;
import org.pentaho.di.repository.RepositoryDirectoryInterface;
import org.pentaho.di.repository.RepositoryMeta;
import org.pentaho.di.repository.kdr.KettleDatabaseRepository;
import org.pentaho.di.repository.kdr.KettleDatabaseRepositoryMeta;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
public class KettleUtil {
public static void runTransformation(String transformationPath) throws KettleException {
KettleEnvironment.init();
TransMeta transMeta = new TransMeta(transformationPath);
Trans trans = new Trans(transMeta);
trans.execute(null);
trans.waitUntilFinished();
if (trans.getErrors() > 0) {
throw new KettleException("Transformation failed!");
}
}
public static void runJob(String jobPath) throws KettleException {
KettleEnvironment.init();
JobMeta jobMeta = new JobMeta(jobPath, null);
Job job = new Job(null, jobMeta);
job.start();
job.waitUntilFinished();
if (job.getErrors() > 0) {
throw new KettleException("Job failed!");
}
}
public static Repository connectToRepository(String repositoryName, String host, String port, String database,
String username, String password) throws KettleException {
KettleEnvironment.init();
Repository repository = new KettleDatabaseRepository();
DatabaseMeta databaseMeta = new DatabaseMeta(repositoryName, "MYSQL", "Native", host, database, port, username, password);
repository.init(databaseMeta);
if (repository.connect(null)) {
return repository;
} else {
throw new KettleException("Failed to connect to repository!");
}
}
public static void runTransformationFromRepository(Repository repository, String transformationName, String directoryPath) throws KettleException {
RepositoryDirectoryInterface directory = repository.findDirectory(directoryPath);
TransMeta transMeta = repository.loadTransformation(transformationName, directory, null, true, null);
Trans trans = new Trans(transMeta);
trans.execute(null);
trans.waitUntilFinished();
if (trans.getErrors() > 0) {
throw new KettleException("Transformation failed!");
}
}
public static void runJobFromRepository(Repository repository, String jobName, String directoryPath) throws KettleException {
RepositoryDirectoryInterface directory = repository.findDirectory(directoryPath);
JobMeta jobMeta = repository.loadJob(jobName, directory, null, null);
Job job = new Job(repository, jobMeta);
job.start();
job.waitUntilFinished();
if (job.getErrors() > 0) {
throw new KettleException("Job failed!");
}
}
}
```
请注意,此示例仅提供了一些基本方法,以运行转换和作业。你需要根据自己的需求进行适当的修改和扩展。