1.调用本地文件
public static void runNativeTransformation(String[] params,String filename) {
try {
//初始化
KettleEnvironment.init();
EnvUtil.environmentInit();
TransMeta transMeta = new TransMeta(filename);
//转换
Trans trans = new Trans(transMeta);
//执行
trans.execute(params); // You can pass arguments instead of null.
//等待结束
trans.waitUntilFinished();
if ( trans.getErrors() > 0 ){
throw new RuntimeException( "There were errors during transformation execution." );
}
}
catch (KettleException e ) {
// TODO Put your exception-handling code here.
System.out.println(filename);
System.out.println("-------------------------------------------------");
System.out.println(e);
}
}
2.调用资源库文件(两种,思路是一样)
第一种:
public static void runRepositoryTransformation(String filename){
String repositoryName = "kettle_repository";
String repositoryPassword = "admin";
String repositoryUserName = "admin";
try{
KettleEnvironment.init();
EnvUtil.environmentInit();
RepositoriesMeta repositoriesMeta = new RepositoriesMeta();
repositoriesMeta.readData(); //资源库元数据都在Repositories.xml中,该方法用来读取
RepositoryMeta repositoryMeta = repositoriesMeta.findRepository(repositoryName);
PluginRegistry registry = PluginRegistry.getInstance(); //获得资源库对象
Repository repository =registry.loadClass(RepositoryPluginType.class,repositoryMeta,Repository.class);
repository.init(repositoryMeta);
repository.connect(repositoryUserName,repositoryPassword);
RepositoryDirectoryInterface directory = repository.findDirectory("/test"); //资源库中文件夹名称
TransMeta transformationMeta = ((Repository) repository).loadTransformation(filename, directory, null, true, null ) ;
Trans trans = new Trans(transformationMeta);
trans.execute(null);
trans.waitUntilFinished();
if ( trans.getErrors() > 0 ){
throw new RuntimeException( "There were errors during transformation execution." );
}
} catch (KettleException e) {
e.printStackTrace();
}
}
第二种:
public static void runRepositoryTransformation(String filename){
String repositoryXML="<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<connection>" +
"<name>kettle_repository</name>" +
"<server>192.168.1.124</server>" +
"<type>Mysql</type>" +
"<access>Native</access>" +
"<database>kettle_repository</database>" +
"<port>3306</port>" +
"<username>root</username>" +
"<password>123456</password>" +
"</connection>";
String repositoryName = "kettle_repository";
String repositoryPassword = "admin";
String repositoryUserName = "admin";
try {
KettleEnvironment.init();
EnvUtil.environmentInit();
KettleDatabaseRepository repository = new KettleDatabaseRepository();
// DatabaseMeta dataMeta =
// new DatabaseMeta("kettle_repository","MySQL","JDBC","192.168.1.124","kettle_repository","3306","root","123456");
DatabaseMeta dataMeta =
new DatabaseMeta(repositoryXML);
KettleDatabaseRepositoryMeta kettleDatabaseMeta =
new KettleDatabaseRepositoryMeta("kettle_repository", "kettle_repository", "king description",dataMeta);
repository.init(kettleDatabaseMeta);
repository.connect("admin","admin");
RepositoryDirectoryInterface directory = repository.findDirectory("/test"); //资源库中文件夹名称
TransMeta transformationMeta = ((Repository) repository).loadTransformation(filename, directory, null, true, null ) ;
Trans trans = new Trans(transformationMeta);
trans.execute(null);
trans.waitUntilFinished();
if ( trans.getErrors() > 0 ){
throw new RuntimeException( "There were errors during transformation execution." );
}
} catch (KettleException e) {
e.printStackTrace();
}
}