kettle中获取执行步骤信息
如下图所示,获取到的信息打印后和kettle日志打印出来的内容是一致的,
上述打印其实很简单,如下代码所示,其实就是从trans中获取执行步骤,从执行步骤中获取信息。
//等待完成
trans.waitUntilFinished();
if (trans.getErrors() > 0) {
System.out.println("交换出错.");
return;
}
List<StepMetaDataCombi> steps = trans.getSteps();
for (StepMetaDataCombi step : steps) {
long i = 0; //输入数据量
long o = 0; //输出数据量
long r = 0; //读取的数据数量
long w = 0; //写入的数据量
long u = 0; //更新的数据量
long e = 0; //错误的数据量
long inputSize = 0; //rowset输入量
long outputSize = 0;//rowset输出量
StepInterface si = step.step;
i += si.getLinesInput();
o += si.getLinesOutput();
r += si.getLinesRead();
w += si.getLinesWritten();
u += si.getLinesUpdated();
e += si.getErrors();
inputSize += si.rowsetInputSize();
outputSize += si.rowsetOutputSize();
String outputInfo = String.format(step.stepname+"(I=%d,O=%d,R=%d,W=%d,U=%d,E=%d,is=%d,os=%d)",i,o,r,w,u,e,inputSize,outputSize);
System.out.println(outputInfo);
}
上面是简单的,如果这个执行步骤是自己写的,继承了kettle的执行步骤,然后里面有一些交换信息,此时,就可以通过Trans.getSteps这个方法获取到执行步骤,
甚至通过StepMetaDataCombi.stepname获取到设置的step的名字,根据不同的步骤做不同的处理方案。