Kettle之错误处理(Error Handling)里面的坑

简介: Kettle之错误处理(Error Handling)里面的坑

1 前言



在使用表输出输出数据到数据库时,因数据库约束检查等原因造成数据无法正常入库.这时"表输出"步骤若是没有定义错误处理的话,transformation转换会报出异常并且停止进行运行.


为了保证程序的正常运行,我们可以在transform安通转换中"表输出"步骤中定义错误处理.此种方式可以捕获异常数据并持久化保存到硬盘或数据库中,利于后期数据的分析,来提高数据质量.


2 错误处理设置



错误处理,处理步骤如下:


网络异常,图片无法展示
|


image.png


在可能出错的组件上单击鼠标右键,选择Error Handling.填写相应的信息字段,然后将错误信息写入数据库或者文件中.


网络异常,图片无法展示
|


image.png


网络异常,图片无法展示
|


image.png


入库错误日志表展示如下:


网络异常,图片无法展示
|


image.png


3 错误处理里面的坑



然而,在转换"表输出"上设置错误处理时,会提示如下信息:


网络异常,图片无法展示
|


image.png


翻译为:警告!由于驱动程序的限制,在使用的数据库上不完全支持与批处理结合的错误处理。请谨慎行事,风险自负。


也就是说当进行批处理操作时,设置错误处理可能会出现异常信息漏捕获的情况.我案例中生成异常信息1692个,而实际只捕获到168个.


而当"表输出"操作取消批处理时(如下设置),就可以全部捕获异常信息.然后为了保证正确数据被处理,同时不缺失异常信息而让每次提交的数据量设置为1,这样会大大降低效率.


网络异常,图片无法展示
|


image.png


解决方案: 创建一张和指定表结构完全相同的表,只是不设置任何数据库约束(主键).然后先将数据全部接收进这张表,再在数据库层面进行去重后插入另外一张指定的表中.这样既可以保留所有原数据,又可以实现数据去重.


4 参考文章:


(1) Kettle中定义错误处理: https://blog.csdn.net/feng19821209/article/details/9120561


(2) KETTLE 执行转换时遇到错误,记录并继续运行: https://blog.csdn.net/shenlong_no1/article/details/78819453


(3)https://wiki.pentaho.com/display/EAI/.09+Transformation+Steps#.09TransformationSteps-StepErrorHandling

相关文章
|
Android开发
XAMRAIN的INSTALL_FAILED_NO_MATCHING_ABIS错误处理
错误提示是:INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-11 解决方法: 打开xamarin .
1510 0
|
1月前
|
JavaScript 算法
“Error: error:0308010C:digital envelope routines::unsupported”启动vue项目遇到一个错误【已解决
“Error: error:0308010C:digital envelope routines::unsupported”启动vue项目遇到一个错误【已解决
34 1
|
9月前
|
BI
ABAP 异常处理(Exception Handling) - 什么是 Non-Class-Based 异常试读版
ABAP 异常处理(Exception Handling) - 什么是 Non-Class-Based 异常试读版
|
JSON C++ 数据格式
FastAPI(27)- Handling Errors 处理错误 (下)
FastAPI(27)- Handling Errors 处理错误 (下)
530 0
FastAPI(27)- Handling Errors 处理错误 (下)
|
2月前
|
机器学习/深度学习 Java Android开发
记录一个Flutter运行的异常FAILURE: Build failed with an exception. What went wrong: A problem occurred config
记录一个Flutter运行的异常FAILURE: Build failed with an exception. What went wrong: A problem occurred config
100 0
|
Java Maven
invalid bound statement (not found) - 接手一个老项目时报的几个错误处理方案
invalid bound statement (not found) - 接手一个老项目时报的几个错误处理方案
167 0
invalid bound statement (not found) - 接手一个老项目时报的几个错误处理方案
关于 编译软件时报错“xdo.c:29:34: fatal error: X11/extensions/XTest.h:”错误 的解决方法
关于 编译软件时报错“xdo.c:29:34: fatal error: X11/extensions/XTest.h:”错误 的解决方法
关于 编译软件时报错“xdo.c:29:34: fatal error: X11/extensions/XTest.h:”错误 的解决方法
|
JSON API 数据格式
FastAPI(27)- Handling Errors 处理错误 (上)
FastAPI(27)- Handling Errors 处理错误 (上)
240 0
FastAPI(27)- Handling Errors 处理错误 (上)
|
供应链
SAP LSMW 事务代码HUPAST的录屏后台执行报错 - Runtime error RAISE_EXCEPTION has occurred - 之分析
SAP LSMW 事务代码HUPAST的录屏后台执行报错 - Runtime error RAISE_EXCEPTION has occurred - 之分析
SAP LSMW 事务代码HUPAST的录屏后台执行报错 - Runtime error RAISE_EXCEPTION has occurred - 之分析
|
JavaScript 开发工具 git
error handling in Nodejs
If I simply throw the exception: