postgresql - Kafka Connect JDBC db.timezone 配置
问题描述
我试图围绕 db.timezone 属性如何在源连接器和接收器连接器上工作。
对于来源,文档说:
使用基于时间的条件进行查询时,连接器中使用的 JDBC 时区名称。默认为 UTC。
这实际上意味着什么?那应该设置为我的源数据库的时区吗?我有一个设置为东部时区的数据库。我需要将其设置为美国/东部吗?如果我不这样做,它会做什么?
在接收器方面,文档说:
插入基于时间的值时应在连接器中使用的 JDBC 时区名称。默认为 UTC。
这又是什么意思。它是否使用它将有效负载中的所有时间戳转换为您在此处提供的值?
我的具体问题是我的源数据库有东部时区,但我的接收器数据库设置为 UTC,我无法更改它。我应该如何定义这些属性。
另外补充一点,我认为这有点不相关,但我注意到在我的接收器一侧,时间戳没有所有小数。但是在双方都将时间戳列设置为时间戳(6)。然而,在接收端,小数点总是只有 3 位,其余 3 位都是 0。为什么会这样?
解决方案
看看源代码:
了解您为配置选项指定的值db.timezone
将如何被 kafka-connect-jdbc 连接器使用。
我假设对于您的源连接器,您应该使用
db.timezone=US/Eastern
使用基于时间的 > 条件进行查询时,连接器中使用的 JDBC 时区的名称。默认为 UTC。这实际上意味着什么?
当从不使用 UTC 时区存储日期/时间列的数据库中读取/写入数据时,该db.timezone
设置会派上用场。
由于您的接收器数据库使用UTC
时区,因此在您的 jdbc 接收器配置中没有与设置时区相关的其他设置。
推荐阅读
- python - AttributeError:模块“importlib”没有属性“util”
- php - Laravel Nova v3 全局和资源级别的间歇性搜索结果
- php - Laravel 初始页面加载非常慢,因为它运行重复查询以获得正确的翻译
- javascript - JavaScript 减少两个以上项目的抛出错误
- arrays - 使用在 C 中接收字符串的方法
- java - 在 Date Java 中设置时区
- python - 当我在控制台之外执行时,Python 脚本执行目录发生了变化
- flutter - myfatoorah_flutter 导入包构建失败
- docker - 使用 Docker for Windows 启动 SMB 容器
- angular - 使用 ng-multiselect-dropdown 过滤并仅显示以输入字符开头的选项