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 id_pk PRIMARY KEY (id ),
  CONSTRAINT id_unin UNIQUE (id )
)

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

a0表数据预览:

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

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

相关字段说明:

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

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

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

记录的错误信息如下:

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

说明 1.错误日志的错误码含义(如:TOP001)含义见参考文章2.

目录
相关文章
|
4月前
|
SQL 数据采集 Java
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
41 0
|
4月前
|
SQL 关系型数据库 数据库
PostgreSQL【应用 02】扩展SQL之C语言函数(编写、编译、载入)实例分享
PostgreSQL【应用 02】扩展SQL之C语言函数(编写、编译、载入)实例分享
49 0
|
5月前
|
C++
64 C++ - 标准异常库
64 C++ - 标准异常库
21 0
|
SQL Java Maven
Hive利用宏自定义简短的函数
Hive利用宏自定义简短的函数
|
存储 自然语言处理 编译器
程序环境和预处理(基本定义与实例使用)
程序环境和预处理(基本定义与实例使用)
72 0
程序环境和预处理(基本定义与实例使用)
|
SQL 自然语言处理 分布式计算
HiveSQL源码之语法词法编译文件解析一文详解
HiveSQL源码之语法词法编译文件解析一文详解
264 0
HiveSQL源码之语法词法编译文件解析一文详解
|
Shell Linux Python
Python开发基础总结(六)配置文件读取+异常+类型系统+文件
Python开发基础总结(六)配置文件读取+异常+类型系统+文件
|
前端开发 测试技术
|
安全 Java 网络性能优化
工程代码中的错误处理
概要:在前序的文章中,我们已经陈述过了工程代码是在对被设计对象的了解不完全清楚的情况下所作出的设计。这就使得工程代码中不可避免的会出现相关的错误。由于工程代码是复杂的,如果对错误不加以控制,将可能会导致错误的扩大化。因此,对代码中可能出现的错误进行分类,并基于错误分类进行不同的错误处理是必要的工作。错误的扩大化对于高度复杂的系统,由于系统之间的联动,局部的错误可能会导致全局性的错误。用系统论的话来
3569 0
工程代码中的错误处理
|
C语言 C++
【C 语言】文件操作 ( 配置文件读写 | 框架搭建 | 头文件定义 | 头文件导入限制 | 兼容 C++ 语言 | 函数形参输入输出属性注释)
【C 语言】文件操作 ( 配置文件读写 | 框架搭建 | 头文件定义 | 头文件导入限制 | 兼容 C++ 语言 | 函数形参输入输出属性注释)
149 0