oracle - JdbcSourceConnector - 不是一个有效的月份
问题描述
在我的表中,TIME_STAMP 列定义为 CHAR(23 BYTE)
连接器配置:
{
"name": "object-prule-types-Jdbc-connector",
"config": {
"connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
"tasks.max": "1",
"connection.url": "jdbc:oracle:thin:@//hostname:1521/ORCL",
"connection.user": "DEV",
"connection.password": "pass",
"mode": "timestamp",
"query":"select * from (select t.*,to_timestamp(TIME_STAMP,'YYYY-MM-DD HH24:MI:SS.FF3') TIMESTAMP_MODE_COLUMN from OBJECT_PRULE_TYPES t)",
"topic.prefix": "m2-",
"topic.creation.enable": "false",
"timestamp.initial": 1631153989,
"value.converter": "io.confluent.connect.avro.AvroConverter",
"value.converter.schema.registry.url": "http://schema-registry:9999",
"schema.patternn": "ORCL",
"catalog.pattern": "ORCL",
"poll.interval.ms": 3000,
"timestamp.column.name": "TIMESTAMP_MODE_COLUMN",
"validate.non.null": false
}
}
我得到以下异常:
ERROR Failed to run query for table TimestampIncrementingTableQuerier{table=null, query='select * from (select t.*,to_timestamp(TIME_STAMP,'YYYY-MM-DD HH24:MI:SS.FF3') TIMESTAMP_MODE_COLUMN from OBJECT_PRULE_TYPES t)', topicPrefix='miri-', incrementingColumn='', timestampColumns=[TIMESTAMP_MODE_COLUMN]}: {} (io.confluent.connect.jdbc.source.JdbcSourceTask)
connect | java.sql.SQLDataException: ORA-01847: day of month must be between 1 and last day of month
我也尝试删除查询并添加转换
连接器配置:
{
"name": "object-prule-types-Jdbc-connector",
"config": {
"connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
"tasks.max": "1",
"connection.url": "jdbc:oracle:thin:@//hostname:1521/ORCL",
"connection.user": "DEV",
"connection.password": "pass",
"mode": "timestamp",
"table.whitelist" : "DEV.OBJECT_PRULE_TYPES",
"topic.prefix": "m2-",
"topic.creation.enable": "false",
"timestamp.initial": 1631153989,
"value.converter": "io.confluent.connect.avro.AvroConverter",
"value.converter.schema.registry.url": "http://schema-registry:9999",
"schema.patternn": "ORCL",
"catalog.pattern": "ORCL",
"poll.interval.ms": 3000,
"timestamp.column.name": "TIME_STAMP",
"validate.non.null": false,
"transforms" :"updt_dt",
"transforms.updt_dt.type": "org.apache.kafka.connect.transforms.TimestampConverter$Value",
"transforms.updt_dt.target.type": "string",
"transforms.updt_dt.field": "TIME_STAMP",
"transforms.updt_dt.format": "yyyy-MM-dd HH:mm:ss.SSS"
}
}
我得到以下异常:
connect | [2021-10-05 09:15:48,502] ERROR Failed to run query for table TimestampIncrementingTableQuerier{table="MIRI_RULE_DEV"."OBJECT_PRULE_TYPES", query='null', topicPrefix='miri-', incrementingColumn='', timestampColumns=[TIME_STAMP]}: {} (io.confluent.connect.jdbc.source.JdbcSourceTask)
connect | java.sql.SQLDataException: ORA-01843: not a valid month
connect |
connect | at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:494)
connect | at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:446)
connect | at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1054)
connect | at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:623)
connect | at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:252)
connect | at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:612)
connect | at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:226)
connect | at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:59)
connect | at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:747)
connect | at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:904)
connect | at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1082)
connect | at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3780)
connect | at oracle.jdbc.driver.T4CPreparedStatement.executeInternal(T4CPreparedStatement.java:1343)
connect | at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3822)
connect | at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1165)
connect | at io.confluent.connect.jdbc.source.TimestampIncrementingTableQuerier.executeQuery(TimestampIncrementingTableQuerier.java:178)
connect | at io.confluent.connect.jdbc.source.TableQuerier.maybeStartQuery(TableQuerier.java:92)
connect | at io.confluent.connect.jdbc.source.TimestampIncrementingTableQuerier.maybeStartQuery(TimestampIncrementingTableQuerier.java:61)
connect | at io.confluent.connect.jdbc.source.JdbcSourceTask.poll(JdbcSourceTask.java:315)
connect | at org.apache.kafka.connect.runtime.WorkerSourceTask.poll(WorkerSourceTask.java:265)
connect | at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:232)
connect | at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:177)
connect | at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:227)
connect | at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
connect | at java.util.concurrent.FutureTask.run(FutureTask.java:266)
connect | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
connect | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
connect | at java.lang.Thread.run(Thread.java:748)
connect | Caused by: Error : 1843, Position : 57, Sql = SELECT * FROM "DEV"."OBJECT_PRULE_TYPES" WHERE "DEV"."OBJECT_PRULE_TYPES"."TIME_STAMP" > :1 AND "DEV"."OBJECT_PRULE_TYPES"."TIME_STAMP" < :2 ORDER BY "DEV"."OBJECT_PRULE_TYPES"."TIME_STAMP" ASC, OriginalSql = SELECT * FROM "DEV"."OBJECT_PRULE_TYPES" WHERE "DEV"."OBJECT_PRULE_TYPES"."TIME_STAMP" > ? AND "DEV"."OBJECT_PRULE_TYPES"."TIME_STAMP" < ? ORDER BY "DEV"."OBJECT_PRULE_TYPES"."TIME_STAMP" ASC, Error Msg = ORA-01843: not a valid month
解决方案
推荐阅读
- sql - 如何找出每个加载时间戳已将多少条记录加载到表中
- google-cloud-platform - 如何将 Google Dataproc 查询的结果存储在变量 GCP 中
- matlab - 在 Matlab 中使用 fmincon 和脚本函数
- python - Django 在遥远的将来运行任务(可能)
- macos - 如何获得状态恢复以恢复 macOS 上的所有窗口/选项卡?
- express - 如何使用 nunjucks 在 express 中创建视图助手?
- javascript - 不能在嵌套的 TouchableOpacity 中工作
- python - Selenium for 循环只执行一次
- excel - 使用 EXCEL 计算依赖于行中其他单元格的单元格 - 创建矩阵
- git - 如何忽略文件夹中不以@开头的所有目录?