使用 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”