zoukankan      html  css  js  c++  java
  • kettle异常

    一个Kettle异常的解决方式

    最近kettle中的几个转换抛出如下异常:

    Because of an error, this step can't continue: 

    org.pentaho.di.core.exception.KettleException: 

    Error inserting row into table [BOND_ISSUE] with values: [291209410397], [8067], [8067], [中国普天信息产业股份有限公司2009年度第一期短期融资券], [6], [1], [1420], [2], [2009/03/24 00:00:00.000], [中国普天信息产业股份有限公司], [99], [null], [null], [联合资信评估有限公司、中诚信国际信用评级有限公司], [A-1], [中国光大银行股份有限公司], [2], [2009/03/24 00:00:00.000], [全国银行间债券市场机构投资者(国家法律、法规禁止购买者除外)。], [利率招标簿记建档], [100], [1000000], [null], [2009/03/30 00:00:00.000], [2009/03/31 00:00:00.000], [800000000], [800000000], [null], [2009/04/01 00:00:00.000], [89], [null], [null], [2010/03/26 00:00:00.000], [2011/05/30 10:02:49.000], [360064768821], [null], [null], [null], [null], [null]

     Unexpected error inserting row

    -32363

    at org.pentaho.di.trans.steps.tableoutput.TableOutput.writeToTable(TableOutput.java:445)

    at org.pentaho.di.trans.steps.tableoutput.TableOutput.processRow(TableOutput.java:128)

    at org.pentaho.di.trans.step.RunThread.run(RunThread.java:50)

    at java.lang.Thread.run(Thread.java:662)

    Caused by: org.pentaho.di.core.exception.KettleDatabaseException: 

    Unexpected error inserting row

     -32263

    at org.pentaho.di.trans.steps.tableoutput.TableOutput.writeToTable(TableOutput.java:341)

    ... 3 more

    Caused by: java.lang.ArrayIndexOutOfBoundsException: -32263

    at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:2677)

    at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:9270)

    at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:210)

    at org.pentaho.di.trans.steps.tableoutput.TableOutput.writeToTable(TableOutput.java:315)

    ... 3 more

    报错的是一个 表输出 组件

    解决方式: 表输出组件默认为使用批量插入,数量为1000条。将1000条修改为500条,转换就可以正常执行了。

    分析:看样子是 ojdbc的bug。当前用的是ojdbc6。已经是最新的ojdbc了。报问题的时机都是在已经batch到库中1000条,进行第二个1000条插入的时候就报错了

    所以认为跟batch的记录条数有关系。降低条数后果然不再报错。因为异常中有 java.lang.ArrayIndexOutOfBoundsException: -32263 。我猜测ojdbc用一维数组保存了

    batch条数 x 记录列数 。当batch很大时,超出了整数能表示的数组下标最大值时,ojdbc报错

  • 相关阅读:
    Redis Sentinel:集群Failover解决方案(转载)
    C#获取Windows屏幕尺寸
    C# 获取屏幕的大小 SystemInformation类
    拆分器控件Splitcontainer
    (收藏)《博客园精华集》分类索引(转 )
    Redis内存数据库在Exchange会议室的应用(转)
    【转】开源Math.NET基础数学类库使用(01)综合介绍
    15个nosql数据库
    20个代码生成框架(转)
    nodeJS安装和环境变量的配置
  • 原文地址:https://www.cnblogs.com/ppqchina/p/6419096.html
Copyright © 2011-2022 走看看