【问题标题】:How to format Timestamp value to Date Format in Confluent Kafka connect - JDBC Oracle Source Connector如何在 Confluent Kafka 连接中将时间戳值格式化为日期格式 - JDBC Oracle 源连接器
【发布时间】:2021-01-28 11:29:54
【问题描述】:

我在 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(等效毫秒格式)

【问题讨论】:

    标签: jdbc apache-kafka apache-kafka-connect


    【解决方案1】:

    您可以使用 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"

    【讨论】:

      【解决方案2】:

      解决此问题的一种简单而优雅的方法是在 MySQL Source 上使用此属性:

      "time.precision.mode":"connect"
      

      这将使用 Kafka Connect 内置日期类型处理日期:

      connect 使用 Kafka Connect 内置的时间、日期和时间戳表示来表示时间和时间戳值。无论数据库列精度如何,它都使用毫秒精度。

      此属性的默认值为“adaptive_time_microseconds”:

      adaptive_time_microseconds(默认值)捕获与数据库中完全相同的日期、日期时间和时间戳值。它使用基于数据库列类型的毫秒、微秒或纳秒精度值。 TIME 类型字段是一个例外,它总是以微秒为单位。

      更多详情,请查看Debezium MySQL source documentation

      【讨论】:

      • 当使用 Confluent JDBC 连接器连接到 Oracle 数据库时,这如何适用?
      猜你喜欢
      • 1970-01-01
      • 2018-12-19
      • 2019-09-28
      • 2019-10-31
      • 1970-01-01
      • 2020-02-05
      • 2022-11-26
      • 1970-01-01
      • 2020-06-22
      相关资源
      最近更新 更多