今天遇到一个比较奇葩的事,在Kettle更新Greenplum&Postgresql时会出以下错误:
2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : Unexpected error 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : org.pentaho.di.core.exception.KettleStepException: 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : Error in step, asking everyone to stop because of: 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : Error looking up row in database 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : ERROR: Unexpected internal error (cdbdisp.c:466) 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : at org.pentaho.di.trans.steps.insertupdate.InsertUpdate.processRow(InsertUpdate.java:307) 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : at org.pentaho.di.trans.step.RunThread.run(RunThread.java:40) 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : at java.lang.Thread.run(Thread.java:662) 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : Caused by: org.pentaho.di.core.exception.KettleDatabaseException: 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : Error looking up row in database 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : ERROR: Unexpected internal error (cdbdisp.c:466) 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : at org.pentaho.di.core.database.Database.getLookup(Database.java:3120) 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : at org.pentaho.di.core.database.Database.getLookup(Database.java:3093) 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : at org.pentaho.di.trans.steps.insertupdate.InsertUpdate.lookupValues(InsertUpdate.java:80) 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : at org.pentaho.di.trans.steps.insertupdate.InsertUpdate.processRow(InsertUpdate.java:290) 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : ... 2 more 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : Caused by: org.postgresql.util.PSQLException: ERROR: Unexpected internal error (cdbdisp.c:466) 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2077) 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1810) 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257) 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:498) 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:386) 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:271) 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : at org.pentaho.di.core.database.Database.getLookup(Database.java:3101) 2014/08/08 11:08:15 - Insert / Update.0 - ERROR (version 4.2.1, build 1 from 2012-11-22 19.15.47 by Administrator) : ... 5 more 2014/08/08 11:08:15 - Table input.0 - Stopped while putting a row on the buffer
网上基本找不到跟“Unexpected internal error (cdbdisp.c:466)”相关的问题,但是在Pentaho论坛找到一个bug http://wiki.pentaho.com/display/EAI/Insert+-+Update
解决方法是在数据库连接的高级选项中,勾选“Supports boolean data type”即可。
想了下,问题的原因应该是GP和PG中不会对boolean向int自动转换;问题出在建表时有字段类型是类似smallint(1)这种的情况,jdbc遇到长度为1的整形字段时(定义字段)会自动转为布尔值,所以产生了该问题。最好的解决方法,是在select时对这种类型的字段应该乘以1或者加0,利用隐式转换使字段结果为整型字段(显式转换应该也可以),这样有个好处,在遇到2~9时,不会因为前边提到的布尔类型转换都成为1
相关推荐
kettle Greenplum批量加载-Greenplum Load,greenplum快速加载案例
kettle 集群& 并行& 分区 的介绍,是kettle solution ..的中文版
postgre最新驱动
kettle连接需要的jar包,包含mysql sqlserver greenplum oracle mongodb cassandra等常用数据库jar,希望能帮到您!
Kettle增量同步,里边包含项目文件可能需要你新建数据库。源数据为Oracle,目标数据库为PostgreSQL. 增量记录表.SQL 用来生成 edp_etl_record 表 记录每次更新数据的执行记录过程。 更新时先取出edp_etl_record 表...
ETL之kettle 增量更新并标识删除的记录 不删除原始数据
mysql、oracle、sqlserver、greenplum、mongodb、cassandra
Kettle JOB执行出错,发送带附件的邮件
kettle中集成Excel&Sql;&JS;所需jar,导入项目中,初始化便可以使用!
kettle 使用中的一些常见问题 问题1: 从excel 中抽取数据,插入到oracle 9 数据库中,报下面的错误. 2008/06/25 13:30:57 - 插入更新数据表.0 - Insert row: ![field1=1.3965E8, field2=1,798, field3=2002/05/27 00:...
kettle增量更新作业.rar
Kettle是一款国外开源的ETL工具,纯Java编写,可以在Windows、Linux、Unix上运行,无需安装,数据抽取高效稳定。以百度网盘形式提供kettle文件下载
kettle 开发手册 ETL 开发参考手册
关于Kettle 转换、作业日志自动配置的解决方案
KETTLE常见问题和优化
kettle合并记录处理同表数据更新等操作.doc
kettle常见问题kettle常见问题kettle常见问题kettle常见问题kettle常见问题
【kettle012】kettle访问FTP服务器文件并处理数据至PostgreSQL
压缩包包含3份材料,内容如下 1.kettle访问PostgreSQL数据库并处理数据至execl文件 2.postgresql-42.2.5.jar 3.实验建表语句.sql
Kettle 增量式更新 oracle 增 删 改