首页 > 解决方案 > 如何在 Confluent Kafka 连接中将时间戳值格式化为日期格式 - JDBC Oracle 源连接器

问题描述

我在 Kafka Connect 中设置了一个 JDBC Oracle 源连接器,并且在 Oracle 表中有一个时间戳列,其值设置为日期格式“21-MAR-18 05.39.44.0194990 AM”。

Oracle 表中的所有数据都被提取到 Kafka 主题中,但是 Oracle 表中日期格式的列(时间戳列)的值被转换为毫秒,并以毫秒值显示在主题中。我希望收到 Oracle 表中的日期格式。

{
  "name":"JDBC_CONN_1",
  "config": {
  "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
  "connection.url": "jdbc:oracle:thin:@<hostname>:1521/<servicename>",
  "connection.user": "User",
  "connection.password": "Password",
  "table.whitelist": "Table_Name",
  "catalog.pattern": "",
  "schema.pattern": "Schema_Name",
  "mode": "bulk",
  "poll.interval.ms": "1000",
  "numeric.mapping":"best_fit",
  "topic.prefix": "JDBC_CONN_1"
  }
}

数据库表列:

UPDATED_ON  TIMESTAMP(6)    Not Null
column value - 27-MAR-18 05.39.44.0194490 AM

主题中的值:1522129184019(等效毫秒格式)

标签: jdbcapache-kafkaapache-kafka-connect

解决方案


您可以使用 SMT TimeStampConverter

https://docs.confluent.io/current/connect/transforms/timestampconverter.html#timestampconverter

解决您的问题的示例接缝:

"transforms": "TimestampConverter",
"transforms.TimestampConverter.type": "org.apache.kafka.connect.transforms.TimestampConverter$Value",
"transforms.TimestampConverter.format": "yyyy-MM-dd"
"transforms.TimestampConverter.target.type": "string"

前:1556204536000

后:"2014-04-25"


推荐阅读