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="" +
                "" +
                "kettle_repository" +
                "192.168.1.124" +
                "Mysql" +
                "Native" +
                "kettle_repository" +
                "3306" +
                "root" +
                "123456" +
                "";
        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();
        }
}

你可能感兴趣的:(Java,kettle)