使用 SQL Server 上的 JDBC Sink 连接器自动创建适当的 DATETIME 类型字段

Posted

技术标签:

【中文标题】使用 SQL Server 上的 JDBC Sink 连接器自动创建适当的 DATETIME 类型字段【英文标题】:Autocreation appropriate DATETIME type fields using JDBC Sink Connector on SQL Server 【发布时间】:2021-01-13 08:08:15 【问题描述】:

我使用 Debezium 1.2

我有 MSSQL 数据库,想将数据从一个表发布到其他数据库中的许多其他表(Debezium 的常见场景)

所以我设置了 MSSQL 源连接器和 JDBC 接收器连接器。 一切都很好,除了一件事。 DATETIME 列在消费者的数据库中创建为 INT64

我在 JDBC 接收器配置中使用这样的代码修复了它:

        "transforms.TimestampConverter.format": "yyyy-MM-dd HH:mm:ss.SSSSSS",
        "transforms.TimestampConverter.target.type": "Timestamp",
        "transforms.TimestampConverter.field ": "date3",

实际上它有效,但我必须编写源表的 ALL 列(我应该吗?)。万一有多个主题,这是不可能的。

那么问题来了: 如何配置接收器/源以自动允许 crete DATETIME 列而不迭代所有已知列?

【问题讨论】:

您能在数据库上创建一个视图来代替进行转换吗? 哦!好主意!但我仍然需要查看 DateTime 列的每个表 【参考方案1】:

您可以设置time.precision.mode=connect - 请参阅https://debezium.io/documentation/reference/1.2/connectors/sqlserver.html#sqlserver-temporal-values

【讨论】:

以上是关于使用 SQL Server 上的 JDBC Sink 连接器自动创建适当的 DATETIME 类型字段的主要内容,如果未能解决你的问题,请参考以下文章

连接到 sql server 时出现 pyspark jdbc 错误

在 SQL Server 2012 上使用带有空间索引的 STDistance 比使用 COS、SIN 和 ACOS 计算要慢,并给出椭圆形的结果

jdbc.SQLServerException:将数据导出到 Azure SQL Server 时找不到数据类型“TEXT”

如何使用JDBC连接到SQL Server

使用 JDBC 识别 SQL Server 版本

android 使用jdbc1.3.0 操作 sql server