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的名字,根据不同的步骤做不同的处理方案。

posted @ 2021-08-24 20:20  伟衙内  阅读(222)  评论(0编辑  收藏  举报