首页 > 解决方案 > Kafka Teradata 源连接器获取列标题

问题描述

使用 Kafka Confluent Teradata 源连接器将数据从表中读取到 Kafka 主题中。只要 Teradata 表不包含列标题,这将按预期工作。如果存在列标题,则它引用的是列标题而不是列名称并得到错误。在错误消息中,Emp ID 是列标题,EMP_ID 是列名。

Error:
Caused by: org.apache.avro.SchemaParseException: Illegal character in: Emp ID
        at org.apache.avro.Schema.validateName(Schema.java:1532)
        at org.apache.avro.Schema.access$400(Schema.java:87)
        at org.apache.avro.Schema$Field.<init>(Schema.java:520)
        at org.apache.avro.Schema$Field.<init>(Schema.java:559)

尝试了多个选项,并提出了以下在属性文件中提供查询的解决方法,这按预期工作。但问题是我们有 100 多个表要从 Teradata 中提取,通过这种解决方法,我们需要为每个表创建单独的属性文件,并且必须明确提及所有列。从维护的角度来看,这使得复杂化。

query=SELECT EMP_ID AS EMP_ID, CRET_TS AS CRET_TS FROM schema.table

希望有人可以帮助解决这个问题。

标签: apache-kafkateradataapache-kafka-connect

解决方案


将 COLUMN_NAME=ON 选项附加到 Teradata URL

jdbc:teradata://mytdname/COLUMN_NAME=ON,

推荐阅读