java调用datastage_Java调用Kettle文件,自定义数据源加载 Pentaho Data Integration

pentaho-kettle

kettle-engine

8.3.0.0

system

/Users/gengzhengtao/.m2/repository/pentaho-kettle/kettle-engine/8.1.0.0/kettle-engine-8.1.0.0.jar

pentaho-kettle

kettle-core

8.3.0.0

system

/.m2/repository/pentaho-kettle/kettle-core/8.1.0.0/kettle-core-8.1.0.0.jar

pentaho-kettle

kettle-metastore

8.30.0

system

/.m2/repository/pentaho-kettle/kettle-metastore/8.1.0.0/kettle-metastore-8.1.0.0.jar

private static void runTransfer(String ktrFilePath,Map paras)

throws Exception {

Trans trans = null;

if (StringUtils.isNotEmpty(ktrFilePath))

{

// 初始化

KettleEnvironment.init();

EnvUtil.environmentInit();

// 转换元对象

TransMeta transMeta = new TransMeta(ktrFilePath);

List dmlist = transMeta.getDatabases();

for (DatabaseMeta dm: dmlist

) {

String connection_name = StringUtils.trimToNull(dm.getName());

if(connection_name.equals(Global.getConnectionname())){

dm.setHostname(Global.getHostname());

dm.setDBName(Global.getDbname());

dm.setDBPort(Global.getDbport());

dm.setUsername(Global.getDbusername());

dm.setPassword(Global.getDbpassword());

}

}

// 转换

trans = new Trans(transMeta);

for(Map.Entry entry: paras.entrySet()) {

//向ktr中传值

trans.setVariable(entry.getKey(), entry.getValue().toString());

}

// 执行转换

trans.execute(null);

// 等待转换执行结束

trans.waitUntilFinished();

//更新文件执行文件状态

FileDataSource fileDataSource = new FileDataSource();

if (trans.getErrors() > 0) {

// if(id != 0){

//TODO 更新fileDataSource不在这里处理 放在after

// fileDataSource.setFileKey(id);

// fileDataSource.setExecutStatus("1");

// SpringUtils.getBean(IFileDataSourceService.class).updateFileDataSource(fileDataSource);

// }

String[] errMsgList = KettleLogStore.getAppender().getBuffer(trans.getLogChannelId(), false).toString().split("\n\r\n");

String errMsg=errMsgList[0];

throw new Exception(errMsg);

}

}

else

{

throw new Exception("ktr文件为空!");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值