[ABI 5.1] 数据整合ETL过程取数报类型93数据出现异常

22059
13

愿你似阳光 初学数据Lv2

发表于2020-11-11 16:06

悬赏300

已解决

楼主
本帖最后由 愿你似阳光 于 2020-11-11 16:06 编辑

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



最近看过此主题的会员

xinbaobiao

esen_51JBYX12HL

左岸右转

小新

刘伟良

养蚯蚓吃沙漠

pandabuxizao

数据大白

最佳答案

xxxl

发表于2020-11-11 16:06

只看该作者

取消 关注该作者的回复

刚给研发看报错信息,得到反馈是CREATION_DATE字段存在的源表中,可能字段类型不是时间戳类型而是数值类型字段,需要重新检查一下源表。
13个回答

只看楼主

xxxl 数据领袖Lv6

发表于2020-11-11 16:24

只看该作者

取消 关注该作者的回复

沙发

类型数据异常常常有字段长度不一致、字段类型不一致导致的,您先检查一下输入输出两边对应的字段是否保持一致

愿你似阳光 初学数据Lv2

发表于2020-11-11 16:30

只看该作者

取消 关注该作者的回复

板凳

xxxl 发表于 2020-11-11 16:24
类型数据异常常常有字段长度不一致、字段类型不一致导致的,您先检查一下输入输出两边对应的字段是否保持一 ...

字段类型是一致的。输出端的主题表是直接根据输入端的数据库表建的,包括ETL过程也是创建ETL主题表时自动生成的,只是在前面加了个删除数据的sql组件,而且不知道为什么限制条数时可以正常执行,数据表的条数也没有达到限制的条数。

xxxl 数据领袖Lv6

发表于2020-11-11 16:46

只看该作者

取消 关注该作者的回复

地板

愿你似阳光 发表于 2020-11-11 16:30
字段类型是一致的。输出端的主题表是直接根据输入端的数据库表建的,包括ETL过程也是创建ETL主题表时自动 ...

稍等一下,正给研发看报错信息

xxxl 数据领袖Lv6

发表于2020-11-11 16:06

只看该作者

取消 关注该作者的回复

5#

刚给研发看报错信息,得到反馈是CREATION_DATE字段存在的源表中,可能字段类型不是时间戳类型而是数值类型字段,需要重新检查一下源表。

愿你似阳光 初学数据Lv2

发表于2020-11-11 17:04

只看该作者

取消 关注该作者的回复

6#

xxxl 发表于 2020-11-11 16:56
刚给研发看报错信息,得到反馈是CREATION_DATE字段存在的源表中,可能字段类型不是时间戳类型而是数值类型 ...


愿你似阳光 初学数据Lv2

发表于2020-11-11 17:05

只看该作者

取消 关注该作者的回复

7#


确实是日期型的

xxxl 数据领袖Lv6

发表于2020-11-11 17:10

只看该作者

取消 关注该作者的回复

8#


嗯嗯 那就是字段类型错误了 改成同一种类型吧

愿你似阳光 初学数据Lv2

发表于2020-11-11 17:15

只看该作者

取消 关注该作者的回复

9#

xxxl 发表于 2020-11-11 17:10
嗯嗯 那就是字段类型错误了 改成同一种类型吧

额 我试试吧,不过同一个ETL_JOB 在 标准版 V5.2.2_20191203160911上是可以运行的。源数据的数据库连接池是用一个,目标表的结构也都是一样的。但是在标准版 V5.2.2_20200414120530 这个版本中就不行了。

xxxl 数据领袖Lv6

发表于2020-11-11 17:28

只看该作者

取消 关注该作者的回复

10#

愿你似阳光 发表于 2020-11-11 17:15
额 我试试吧,不过同一个ETL_JOB 在 标准版 V5.2.2_20191203160911上是可以运行的。源数据的数据库连接池 ...

嗯 小版本之间的差距可能在代码结构上会有变化吧

愿你似阳光 初学数据Lv2

发表于2020-11-11 17:47

只看该作者

取消 关注该作者的回复

11#

xxxl 发表于 2020-11-11 17:28
嗯 小版本之间的差距可能在代码结构上会有变化吧

还是会报错,但是这个日期型的字段中 有一些是空值,不知道是不是这个原因。

上一页12下一页共2页

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号