-
-
愿你似阳光 初学数据Lv2
发表于2020-11-11 16:06
悬赏300
已解决
ABI版本 标准版 V5.2.2_20200414120530
ETL过程 JOB_CON_CONTRACT_BP 执行报错:CREATION_DATE字段出现 类型93数据出现异常
下图为数据库表在源系统和目标系统的表结构,是一致的。
直接执行ETL过程 JOB_CON_CONTRACT_BP,在主题表输出组件插入数据时 CREATION_DATE字段出现 类型93数据出现异常。但是限制记录1000条时可以正常运行,本表共有630条数据,截图如下:
以下为报错日志:
2020-11-11 15:51:58 开始执行ETL过程:[JOB_CON_CONTRACT_BP]
2020-11-11 15:51:58 开始执行组件:SQL组件1
2020-11-11 15:51:58 结束执行组件:SQL组件1
2020-11-11 15:51:58 开始执行组件:ZJZL_PROD.CON_CONTRACT_BP
2020-11-11 15:51:58 结束执行组件:ZJZL_PROD.CON_CONTRACT_BP
2020-11-11 15:51:58 开始执行组件:表达式组件1
2020-11-11 15:51:58 结束执行组件:表达式组件1
2020-11-11 15:51:58 开始执行组件:CON_CONTRACT_BP
2020-11-11 15:51:58 组件对应的输入SQL:
SELECT 20201110 AS LOAD_DATE,T0.CONTRACT_BP_ID AS CONTRACT_BP_ID,T0.CONTRACT_ID AS CONTRACT_ID,T0.BP_CATEGORY AS BP_CATEGORY,T0.BP_TYPE AS BP_TYPE,T0.BP_ID AS BP_ID,T0.OBJECT_VERSION_NUMBER AS OBJECT_VERSION_NUMBER,T0.REQUEST_ID AS REQUEST_ID,T0.PROGRAM_ID AS PROGRAM_ID,T0.CREATED_BY AS CREATED_BY,T0.CREATION_DATE AS CREATION_DATE,T0.LAST_UPDATED_BY AS LAST_UPDATED_BY,T0.LAST_UPDATE_DATE AS LAST_UPDATE_DATE,T0.LAST_UPDATE_LOGIN AS LAST_UPDATE_LOGIN,T0.TAX_ID AS TAX_ID,T0.ADDRESS_ID AS ADDRESS_ID,T0.CONTACT_INFO_ID AS CONTACT_INFO_ID,T0.BANK_ACCOUNT_ID AS BANK_ACCOUNT_ID
FROM (
SELECT T0.CONTRACT_BP_ID AS CONTRACT_BP_ID,T0.CONTRACT_ID AS CONTRACT_ID,T0.BP_CATEGORY AS BP_CATEGORY,T0.BP_TYPE AS BP_TYPE,T0.BP_ID AS BP_ID,T0.OBJECT_VERSION_NUMBER AS OBJECT_VERSION_NUMBER,T0.REQUEST_ID AS REQUEST_ID,T0.PROGRAM_ID AS PROGRAM_ID,T0.CREATED_BY AS CREATED_BY,T0.CREATION_DATE AS CREATION_DATE,T0.LAST_UPDATED_BY AS LAST_UPDATED_BY,T0.LAST_UPDATE_DATE AS LAST_UPDATE_DATE,T0.LAST_UPDATE_LOGIN AS LAST_UPDATE_LOGIN,T0.TAX_ID AS TAX_ID,T0.ADDRESS_ID AS ADDRESS_ID,T0.CONTACT_INFO_ID AS CONTACT_INFO_ID,T0.BANK_ACCOUNT_ID AS BANK_ACCOUNT_ID
FROM ZJZL_PROD.CON_CONTRACT_BP T0) T0
2020-11-11 15:51:58 开始迁移到目标表:ZJZL_ODS.CON_CONTRACT_BP
2020-11-11 15:51:58 数据查询耗时:1毫秒结果集结构:
LOAD_DATE(N|0),CONTRACT_BP_ID(N|38),CONTRACT_ID(N|38),BP_CATEGORY(C|100),BP_TYPE(C|100),BP_ID(N|0),OBJECT_VERSION_NUMBER(N|38),REQUEST_ID(N|38),PROGRAM_ID(N|38),CREATED_BY(N|38),CREATION_DATE(P|0),LAST_UPDATED_BY(N|38),LAST_UPDATE_DATE(P|0),LAST_UPDATE_LOGIN(N|38),TAX_ID(N|38),ADDRESS_ID(N|38),CONTACT_INFO_ID(N|38),BANK_ACCOUNT_ID(N|38)
2020-11-11 15:51:58 数据迁移插入SQL:
insert into ZJZL_ODS.CON_CONTRACT_BP("CONTRACT_BP_ID","CONTRACT_ID","BP_CATEGORY","BP_TYPE","BP_ID","OBJECT_VERSION_NUMBER","REQUEST_ID","
ROGRAM_ID","CREATED_BY","CREATION_DATE","LAST_UPDATED_BY","LAST_UPDATE_DATE","LAST_UPDATE_LOGIN","TAX_ID","ADDRESS_ID","CONTACT_INFO_ID","BANK_ACCOUNT_ID","LOAD_DATE") values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
2020-11-11 15:51:58 com.esen.exception.RuntimeException4I18N: 执行数据迁移时出现异常
at oracle.jdbc.driver.Accessor.unimpl(Accessor.java:412)
at oracle.jdbc.driver.Accessor.getTimestamp(Accessor.java:794)
at oracle.jdbc.driver.OracleResultSetImpl.getTimestamp(OracleResultSetImpl.java:1422)
at com.esen.jdbc.pool.PooledResultSet.getTimestamp(PooledResultSet.java:143)
at com.esen.edf.data.migrate.jdbc.JdbcReader$ResultSetHandler.fillColumn(JdbcReader.java:226)
at com.esen.edf.data.migrate.jdbc.JdbcReader$ResultSetHandler.getDataRow(JdbcReader.java:183)
at com.esen.edf.data.migrate.jdbc.JdbcReader.getRow(JdbcReader.java:136)
at com.esen.edf.data.migrate.common.buffer.DataSenderRequestTask.call(DataSenderRequestTask.java:54)
at com.esen.edf.data.migrate.common.buffer.DataSenderRequestTask.call(DataSenderRequestTask.java:24)
at com.esen.ethreadpool.req.RequestTaskFutureImpl.call(RequestTaskFutureImpl.java:100)
at com.esen.scheduling.LocaleTask.call(LocaleTask.java:56)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.esen.exception.RuntimeException4I18N: 发送数据时出现异常
... 15 more
Caused by: com.esen.exception.RuntimeException4I18N: 从结果集获取字段CREATION_DATE,类型93数据出现异常
... 15 more
Caused by: java.sql.SQLException: 无效的列类型: getTimestamp not implemented for class oracle.jdbc.driver.T4CNumberAccessor
... 15 more
2020-11-11 15:51:58 执行ETL过程[JOB_CON_CONTRACT_BP]出现异常:com.esen.exception.RuntimeException4I18N: 执行数据迁移时出现异常
at oracle.jdbc.driver.Accessor.unimpl(Accessor.java:412)
at oracle.jdbc.driver.Accessor.getTimestamp(Accessor.java:794)
at oracle.jdbc.driver.OracleResultSetImpl.getTimestamp(OracleResultSetImpl.java:1422)
at com.esen.jdbc.pool.PooledResultSet.getTimestamp(PooledResultSet.java:143)
at com.esen.edf.data.migrate.jdbc.JdbcReader$ResultSetHandler.fillColumn(JdbcReader.java:226)
at com.esen.edf.data.migrate.jdbc.JdbcReader$ResultSetHandler.getDataRow(JdbcReader.java:183)
at com.esen.edf.data.migrate.jdbc.JdbcReader.getRow(JdbcReader.java:136)
at com.esen.edf.data.migrate.common.buffer.DataSenderRequestTask.call(DataSenderRequestTask.java:54)
at com.esen.edf.data.migrate.common.buffer.DataSenderRequestTask.call(DataSenderRequestTask.java:24)
at com.esen.ethreadpool.req.RequestTaskFutureImpl.call(RequestTaskFutureImpl.java:100)
at com.esen.scheduling.LocaleTask.call(LocaleTask.java:56)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.esen.exception.RuntimeException4I18N: 发送数据时出现异常
... 15 more
Caused by: com.esen.exception.RuntimeException4I18N: 从结果集获取字段CREATION_DATE,类型93数据出现异常
... 15 more
Caused by: java.sql.SQLException: 无效的列类型: getTimestamp not implemented for class oracle.jdbc.driver.T4CNumberAccessor
... 15 more
13个回答
类型数据异常常常有字段长度不一致、字段类型不一致导致的,您先检查一下输入输出两边对应的字段是否保持一致
xxxl 发表于 2020-11-11 16:24
类型数据异常常常有字段长度不一致、字段类型不一致导致的,您先检查一下输入输出两边对应的字段是否保持一 ...
字段类型是一致的。输出端的主题表是直接根据输入端的数据库表建的,包括ETL过程也是创建ETL主题表时自动生成的,只是在前面加了个删除数据的sql组件,而且不知道为什么限制条数时可以正常执行,数据表的条数也没有达到限制的条数。
刚给研发看报错信息,得到反馈是CREATION_DATE字段存在的源表中,可能字段类型不是时间戳类型而是数值类型字段,需要重新检查一下源表。
xxxl 发表于 2020-11-11 17:10
嗯嗯 那就是字段类型错误了 改成同一种类型吧
额 我试试吧,不过同一个ETL_JOB 在 标准版 V5.2.2_20191203160911上是可以运行的。源数据的数据库连接池是用一个,目标表的结构也都是一样的。但是在标准版 V5.2.2_20200414120530 这个版本中就不行了。
愿你似阳光 发表于 2020-11-11 17:15
额 我试试吧,不过同一个ETL_JOB 在 标准版 V5.2.2_20191203160911上是可以运行的。源数据的数据库连接池 ...
嗯 小版本之间的差距可能在代码结构上会有变化吧


