java调用kettle文件

274 阅读1分钟

jar包
链接: pan.baidu.com/s/1nXsgR-e3…
提取码: fr3r

try {
    init();
    KettleEnvironment.init();
    InputStream ktrFile = new ByteArrayInputStream(this.kettleInfoDO.getKettleData());
    TransMeta transMeta = new TransMeta(ktrFile, null, true, null, null);
    List<DatabaseMeta> databases = transMeta.getDatabases();
    for (DatabaseMeta dm : databases) {
        String connectionName = dm.getName().trim();
        if ("InputConnection".equals(connectionName)) {
            dm.setHostname(this.dataSourceBean.getSourceHostName()); // 连接地址
            dm.setDBName(this.dataSourceBean.getSourceDbName()); // 数据库名称
            dm.setDBPort(this.dataSourceBean.getSourceDbPort()); // 端口
            dm.setUsername(this.dataSourceBean.getSourceUserName()); // 用户
            dm.setPassword(this.dataSourceBean.getSourcePassWord()); // 密码
        } else if ("OutputConnection".equals(connectionName)) {
            dm.setHostname(this.dataSourceBean.getTargetHostName()); // 连接地址
            dm.setDBName(this.dataSourceBean.getTargetDbName()); // 数据库名称
            dm.setDBPort(this.dataSourceBean.getTargetDbPort()); // 端口
            dm.setUsername(this.dataSourceBean.getTargetUserName()); // 用户
            dm.setPassword(this.dataSourceBean.getTargetPassWord()); // 密码
        }
    }
    Trans trans = new Trans(transMeta);
    trans.prepareExecution(null);
    //开始转换
    trans.startThreads();
    //阻塞直到转换完成
    trans.waitUntilFinished();

} catch (KettleException e) {
    e.printStackTrace();

}