db2 时间戳模式下的Kafka Connect-如何追加到查询的末尾?

hzbexzde  于 2022-11-07  发布在  DB2
关注(0)|答案(2)|浏览(182)

我有一个已配置的源连接器,从DB2检索并使用时间戳模式。例如:

"name": "my-jdbc-connector",
    "config": {
        "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
        "connection.url": "jdbc:db2://db2server.mycompany.com:4461/myDB",
        "connection.user: "dbUser",
        "connection.password": "dbPass",
        "dialect.name": "Db2DatabaseDialect",
        "mode": "timestamp",
        "query": "select fname, lname, custId, custRegion, lastUpdate from CustomerMaster",
        "timestamp.column.name": "lastUpdate",
        "table.types": "TABLE",
        "topic.prefix": "master.customer"
    }
}

我需要使用“with UR”(带有未提交的读,也称为“脏读”)作为select的一部分,这样就不会锁定我正在查询的表。
但是,在使用时间戳模式时,Kafka Connect会将“on”追加到where子句的末尾,如下所示

where lastUpdate between '10/12/2019' and '10/14/2019';

DB2要求“with UR”是where子句中的最后一个元素。有人知道这样操作where子句是否可行吗?我目前还不知道时间戳模式和“with UR”如何共存。

cxfofazt

cxfofazt1#

您不能在JDBC Kafka连接器上传递动态查询。JDBC连接器使用基于时间戳的高水位线来增量加载数据。这允许使用非常少的配置代码将数据从数据库带到Kafka主题。因此考虑到这一点,您不需要添加用于增量的anywhere子句,但是如果您希望对静态查询使用where子句,则可以执行以下操作:
1.使用子查询如下
“query”:“select * from(从CustomerMaster中选择fname,lname,custId,custRegion,上次更新,其中上次更新在”10/12/2019“与”10/14/2019“之间)o”,
1.在表CustomerMaster上创建视图,并在JDBC连接器上使用视图。
您可以参考此处了解更多详细信息

o3imoua4

o3imoua42#

您可以通过将原始查询 Package 在SELECT * FROM ( your query here)中来欺骗附加了where子句的Kafka connect timestamp模式,Kafka connect where子句将正确地附加在末尾,这将允许查询运行,并且检测机制也将正常工作,因此结果为:

SELECT * FROM ( your query here) WHERE timestampColumn> ? AND timestampColumn < ?  ORDER BY timestampColumnASC

相关问题