Java集成kettle调用trans文件

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();
        }
}

猜你喜欢

转载自blog.csdn.net/qklwdd6/article/details/70740479