首页 > 解决方案 > Kafka Connect JDBC db.timezone 配置

问题描述

我试图围绕 db.timezone 属性如何在源连接器和接收器连接器上工作。

对于来源,文档说:

使用基于时间的条件进行查询时,连接器中使用的 JDBC 时区名称。默认为 UTC。

这实际上意味着什么?那应该设置为我的源数据库的时区吗?我有一个设置为东部时区的数据库。我需要将其设置为美国/东部吗?如果我不这样做,它会做什么?

在接收器方面,文档说:

插入基于时间的值时应在连接器中使用的 JDBC 时区名称。默认为 UTC。

这又是什么意思。它是否使用它将有效负载中的所有时间戳转换为您在此处提供的值?

我的具体问题是我的源数据库有东部时区,但我的接收器数据库设置为 UTC,我无法更改它。我应该如何定义这些属性。

另外补充一点,我认为这有点不相关,但我注意到在我的接收器一侧,时间戳没有所有小数。但是在双方都将时间戳列设置为时间戳(6)。然而,在接收端,小数点总是只有 3 位,其余 3 位都是 0。为什么会这样?

标签: postgresqldb2timezoneapache-kafka-connect

解决方案


看看源代码:

https://github.com/confluentinc/kafka-connect-jdbc/blob/master/src/main/java/io/confluent/connect/jdbc/source/JdbcSourceConnectorConfig.java#L805

了解您为配置选项指定的值db.timezone将如何被 kafka-connect-jdbc 连接器使用。

我假设对于您的源连接器,您应该使用

db.timezone=US/Eastern

使用基于时间的 > 条件进行查询时,连接器中使用的 JDBC 时区的名称。默认为 UTC。这实际上意味着什么?

当从不使用 UTC 时区存储日期/时间列的数据库中读取/写入数据时,该db.timezone设置会派上用场。

由于您的接收器数据库使用UTC时区,因此在您的 jdbc 接收器配置中没有与设置时区相关的其他设置。


推荐阅读