您的位置:首页 > 编程语言 > Java开发

Java集成kettle调用trans文件

2017-04-25 15:48 316 查看
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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  kettle