数据工厂ETL,执行数据迁移时出现异常,模拟运行没问题,字段类型也没问题

371
5

刘伟良 初学数据Lv2

发表于2024-4-29 11:28

悬赏20

未解决

楼主
2024-04-29 11:24:38 开始执行ETL过程:HDMS_SYS_WORK_CALENDAR_LINE
2024-04-29 11:24:38 开始执行组件:SQL组件1
2024-04-29 11:24:38 结束执行组件:SQL组件1
2024-04-29 11:24:38 开始执行组件:SYS_WORK_CALENDAR_LINE
2024-04-29 11:24:38 结束执行组件:SYS_WORK_CALENDAR_LINE
2024-04-29 11:24:38 开始执行组件:过滤组件1
2024-04-29 11:24:38 结束执行组件:过滤组件1
2024-04-29 11:24:38 开始执行组件:表达式组件1
2024-04-29 11:24:38 结束执行组件:表达式组件1
2024-04-29 11:24:38 开始执行组件:SYS_WORK_CALENDAR_LINE
2024-04-29 11:24:38 组件对应的输入SQL:

SELECT T0.LOAD_DATE AS LOAD_DATE,T0.BBQ AS BBQ,T0.CALENDAR_LINE_ID AS CALENDAR_LINE_ID,T0.CALENDAR_ID AS CALENDAR_ID,T0.CALENDAR_DAY AS CALENDAR_DAY,T0.OFF_DAY_FLAG AS OFF_DAY_FLAG,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
FROM (
SELECT T0.LOAD_DATE AS LOAD_DATE,T0.BBQ AS BBQ,T0.CALENDAR_LINE_ID AS CALENDAR_LINE_ID,T0.CALENDAR_ID AS CALENDAR_ID,T0.CALENDAR_DAY AS CALENDAR_DAY,T0.OFF_DAY_FLAG AS OFF_DAY_FLAG,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
FROM (
SELECT 20240429 AS LOAD_DATE,'202404' AS BBQ,T0.CALENDAR_LINE_ID AS CALENDAR_LINE_ID,T0.CALENDAR_ID AS CALENDAR_ID,T0.CALENDAR_DAY AS CALENDAR_DAY,T0.OFF_DAY_FLAG AS OFF_DAY_FLAG,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
FROM (
SELECT T0.CALENDAR_LINE_ID AS CALENDAR_LINE_ID,T0.CALENDAR_ID AS CALENDAR_ID,T0.CALENDAR_DAY AS CALENDAR_DAY,T0.OFF_DAY_FLAG AS OFF_DAY_FLAG,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
FROM (
SELECT T0.CALENDAR_LINE_ID AS CALENDAR_LINE_ID,T0.CALENDAR_ID AS CALENDAR_ID,T0.CALENDAR_DAY AS CALENDAR_DAY,T0.OFF_DAY_FLAG AS OFF_DAY_FLAG,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
FROM CY_PRO.SYS_WORK_CALENDAR_LINE T0) T0 WHERE ((SUBSTR(T0.CALENDAR_DAY,1,4)>=SUBSTR('20240429',1,4)-1) AND (TO_CHAR(T0.CALENDAR_DAY,'YYYYMMDD')<='20240429'))) T0) T0) T0
2024-04-29 11:24:38 开始迁移到目标表:SYS_WORK_CALENDAR_LINE
2024-04-29 11:24:38 创建临时表:T$3TJRISI1033,表结构为:LOAD_DATE(C|8),BBQ(C|6),CALENDAR_LINE_ID(N|0),CALENDAR_ID(N|0),CALENDAR_DAY(P|7),OFF_DAY_FLAG(C|2),OBJECT_VERSION_NUMBER(N|0),REQUEST_ID(N|0),PROGRAM_ID(N|0),CREATED_BY(N|0),CREATION_DATE(P|7),LAST_UPDATED_BY(N|0),LAST_UPDATE_DATE(P|7),LAST_UPDATE_LOGIN(N|0)
2024-04-29 11:24:38 数据迁移插入SQL:
insert into T$3TJRISI1033(LOAD_DATE,BBQ,CALENDAR_LINE_ID,CALENDAR_ID,CALENDAR_DAY,OFF_DAY_FLAG,OBJECT_VERSION_NUMBER,REQUEST_ID,PROGRAM_ID,CREATED_BY,CREATION_DATE,LAST_UPDATED_BY,LAST_UPDATE_DATE,LAST_UPDATE_LOGIN) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)
2024-04-29 11:24:38 com.esen.exception.RuntimeException4I18N: 执行数据迁移时出现异常
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
    at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
    at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
    at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:193)
    at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:873)
    at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1167)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1289)
    at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1491)
    at oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:406)
    at com.esen.jdbc.pool.PooledStatement.getQureyResultSet(PooledStatement.java:54)
    at com.esen.jdbc.pool.impl.oracle.OraclePooledStatement.executeQuery(OraclePooledStatement.java:22)
    at com.esen.datafactory.data.migrate.jdbc.JdbcReader.start(JdbcReader.java:73)
    at com.esen.datafactory.data.migrate.common.buffer.DataSenderRequestTask.call(DataSenderRequestTask.java:46)
    at com.esen.datafactory.data.migrate.common.buffer.DataSenderRequestTask.call(DataSenderRequestTask.java:1)
    at com.esen.platform.common.req.RequestTaskRunner.call(RequestTaskRunner.java:74)
    at com.esen.thread.LocaleTask.call(LocaleTask.java:60)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: com.esen.exception.RuntimeException4I18N: 发送数据时出现异常
    ... 24 more
Caused by: com.esen.exception.RuntimeException4I18N: 读取数据出现异常
    ... 24 more
Caused by: com.esen.jdbc.pool.impl.oracle.OraclePooledSQLException: ORA-01722: 无效数字

    ... 24 more

2024-04-29 11:24:38 执行ETL过程[HDMS_SYS_WORK_CALENDAR_LINE]出现异常:com.esen.exception.RuntimeException4I18N: 执行数据迁移时出现异常
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
    at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
    at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
    at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:193)
    at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:873)
    at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1167)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1289)
    at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1491)
    at oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:406)
    at com.esen.jdbc.pool.PooledStatement.getQureyResultSet(PooledStatement.java:54)
    at com.esen.jdbc.pool.impl.oracle.OraclePooledStatement.executeQuery(OraclePooledStatement.java:22)
    at com.esen.datafactory.data.migrate.jdbc.JdbcReader.start(JdbcReader.java:73)
    at com.esen.datafactory.data.migrate.common.buffer.DataSenderRequestTask.call(DataSenderRequestTask.java:46)
    at com.esen.datafactory.data.migrate.common.buffer.DataSenderRequestTask.call(DataSenderRequestTask.java:1)
    at com.esen.platform.common.req.RequestTaskRunner.call(RequestTaskRunner.java:74)
    at com.esen.thread.LocaleTask.call(LocaleTask.java:60)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: com.esen.exception.RuntimeException4I18N: 发送数据时出现异常
    ... 24 more
Caused by: com.esen.exception.RuntimeException4I18N: 读取数据出现异常
    ... 24 more
Caused by: com.esen.jdbc.pool.impl.oracle.OraclePooledSQLException: ORA-01722: 无效数字

    ... 24 more

最近看过此主题的会员

小新

张名

约克公爵R

chestnut

5个回答

只看楼主

刘伟良 初学数据Lv2

发表于2024-4-29 11:31

只看该作者

取消 关注该作者的回复

沙发

系统检查也检查不出来问题

chestnut 数据领袖Lv6

发表于2024-4-30 14:31

只看该作者

取消 关注该作者的回复

板凳

这个提示是数据问题,可能是字符中包含非数字字符、字符串为空或包含空格、字符串的格式不正确。
可以先确认下是哪个字段的数据有问题,再排查具体是哪条数据。

刘伟良 初学数据Lv2

发表于2024-4-30 15:42

只看该作者

取消 关注该作者的回复

地板

chestnut 发表于 2024-4-30 14:31
这个提示是数据问题,可能是字符中包含非数字字符、字符串为空或包含空格、字符串的格式不正确。
可以先确 ...

可我是直接复制的建表语句啊,两个数据库的表是一样的,

刘伟良 初学数据Lv2

发表于2024-4-30 15:44

只看该作者

取消 关注该作者的回复

5#

刘伟良 发表于 2024-4-30 15:42
可我是直接复制的建表语句啊,两个数据库的表是一样的,

就是我insert可以插,但是数据工厂不行

chestnut 数据领袖Lv6

发表于2024-5-6 15:13

只看该作者

取消 关注该作者的回复

6#

刘伟良 发表于 2024-4-30 15:44
就是我insert可以插,但是数据工厂不行

试试将输出表的数值字段改为字符类型,看看是否能正常输出,排查看看是哪个数据的问题

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

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

小时

全天响应

分钟

快速处理问题

工程师强势助力

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

400咨询:400-0011-866

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

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

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