kettle的报错解决机制

在kettle执行的过程中,如果遇到错误,kettle会停止运行。在某些时候,并不希望kettle停止运行,这时候可以使用错误处理(Step Error Handling)。错误处理允许你配置一个步骤来取代出现错误时停止运行一个转换,出现错误的记录行将会传递给另一个步骤。在Step error handling settings对话框里,需要设置启用错误处理。

下面例子中读取postgres数据库中的a0表数据,然后输出到a1表:

a1表结构如下:

CREATE TABLE a1
(
  a double precision,
  id integer NOT NULL,
  CONSTRAINT idpk PRIMARY KEY (id ),
  CONSTRAINT idunin UNIQUE (id )
)

从表结构可以看出,a1表中id为主键、唯一。

a0表数据预览:

现在a1表数据为空,执行上面的转换,执行成功之后,a1表数据和a0表数据一致。 再次执行,上面的转换会报错,程序停止运行,会报主键重复的异常。

现在,我想报错之后,程序继续往下执行,并记录错误的记录的相关信息,这时候可以使用“定义错误处理”的功能。 在“表输出”的步骤上右键选择“定义错误处理”,弹出如下对话框。

相关字段说明:

  • 目标步骤:指定处理错误的步骤
  • 启用错误处理?:设置是否启用错误处理
  • 错误数列名:出错的记录个数
  • 错误描述列名:描述错误信息的列名称
  • 错误列的列名:出错列的名称
  • 错误编码列名:描述错误的代码的列名
  • 允许的最大错误数:允许的最大错误数,超过此数,不在处理错误
  • 允许的最大错误百分比:
  • 在计算百分百前最少要读入的行数:

添加错误处理后的转换如下:

记录错误信息的字段列表如下,可以看出,errorNum、errorDesc、errorName、errorCode都是在定义错误处理时候填入的列名称,a、id来自于输入的记录的列。

记录的错误信息如下:

分析 可以看到,错误日志里只是记录了出错的行里面的信息,并没有记录当前行所在的表名称以及执行时间等等,如果能够对此进行扩展,则该错误日志表才能更有实际意义。

时间: 2024-10-14 01:58:33

kettle的报错解决机制的相关文章

putty生成密钥SSH远程登录注意步骤及报错解决方法

putty生成密钥SSH远程登录注意步骤及报错解决方法 报"Putty server refused our key"(解决)排查步骤: 1..ssh文件夹权限和authorized_keys文件权限 1-1创建.SSH目录及authorized_keys文件 mkdir –p /root/.ssh touch authorized_keys 1-2 修改目录及文件权限 Chmod 700 .ssh Chmod 600 authorized_keys 2. Selinux安全机制和Ip

Qt类声明中Q_OBJECT的作用与报错解决

2017-06-22 周四 大雨 北京 院里 新建作图类,继承自QCUstomPlot类 因为需要同时作8张图,都要单坐标缩放的功能,因此想干脆新建一个类,继承自QCUstomPlot,把需要的功能都加上.类名取为QCUstomPlotPlus,最终成功版类代码如下: //声明.explicit是为了禁止隐式转换. class QCustomPlotPlus : public QCustomPlot { Q_OBJECT //重要! public: explicit QCustomPlotPlu

Oracle11g 启动报错ORA-00845: MEMORY_TARGET not supported on this system报错解决

ORA-00845: MEMORY_TARGET not supported on this system报错解决 Oracle启动报错 ORA-00845: MEMORY_TARGET not supported on this system报错解决 SQL> startup ORA-00845: MEMORY_TARGET not supported on this system 查看原本大小 [[email protected] oracle]# df -h|grep shm tmpfs

【Unity3D】生成工程报错解决—UnityEditor.HostView:OnGUI() Error building Player: Couldn't build player because of unsupported data on target platform.

错误 错误1:An asset is marked as dont save, but is included in the build: unityEditor.HostView:OnGUI() 错误2:Building - Failed to write file: sharedassets0.assetsUnityEditor.HostView:OnGUI() 错误3:Error building Player: Couldn't build player because of unsup

quick3.3final版创建项目报错解决

quick3.3final版创建项目报错解决 今天新下载了quick3.3final版,于是安装,创建项目,打开player新建项目如下图 然后点击创建,就发生了如下错误,相信应该有不少朋友会碰到的 首先,这里有两个错误 1.PHP Notice:  Undefined index: extracmd in /Users/wangmeng/Documents/quick-3.3/quick/bin/lib/quick/ProjectCreator.php on line 117 这是117行有未

Eclipse @override报错解决

关键字: eclipse @override 报错 解决 第一种解决方案: @Override是JDK5 就已经有了,但有个小小的Bug,就是不支持对接口的实现,认为这不是Override而JDK6 修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@Override 修改你的eclipse指定的编译器版本在选项里的java compiler中指定版本至少在5.0以上 在myEclipse中改变编译器的方法:Project->Properties->Java Compiler-

Android 工程报错解决 Unable to resolve target 'android-17'

转自:http://www.cnblogs.com/csulennon/p/3705177.html 换了系统后,重新安装了Android SDK和ADT插件,导入之前的工作空间.居然发现所有的Android工程都报错了. 我之前的SDK版本是用的17,升级后用的是19. 1: [2014-05-03 14:56:25 - ThinkBlink] Unable to resolve target 'android-17' 2: [2014-05-03 14:56:26 - Game2048Pub

PHP多次调用Mysql存储过程报错解决办法

PHP多次调用Mysql数据库的存储过程会出现问题,主要问题为存储过程中执行多次SQL语句不能一一释放导致的,网上找了一些解决办法,比如使用 multi_query 然后一个一个释放,但是发现根本不适合我们的项目,我们使用CI框架写的,更多的是使用CI的数据库处理方法.所以只能另辟蹊径. 一次偶然,把Mysql链接方式改成了mysqli,两种不同的PHP连接mysql的扩展,官方在高版本中推荐使用mysqli,结果却奇迹般好了,使用Mysql长连接也行,天意么? PHP多次调用Mysql存储过程

jsp页面中onsubmit="return checklogin();"报错解决办法

选择Window->Preferences->MyEclipse->Validation 去掉方框里的对号,然后Apply 然后点击Yes->然后再点击ok->Yes,就好了,如果你打开了那个出现错误jsp页面的话,请关掉重现打开就ok啦 jsp页面中onsubmit="return checklogin();"报错解决办法,布布扣,bubuko.com