使用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)
尝试了多个选项,并提出了以下在属性文件中进行查询的解决方法,该方法可以正常工作。但是问题是我们要从Teradata中提取100个表,采用这种解决方法时,我们需要为每个表创建单独的属性文件,并且必须明确提及所有列。从维护的角度来看这很复杂。
query=SELECT EMP_ID AS EMP_ID, CRET_TS AS CRET_TS FROM schema.table
希望有人可以帮助解决这个问题。
答案 0 :(得分:1)
将COLUMN_NAME = ON选项附加到Teradata URL
jdbc:teradata://mytdname/COLUMN_NAME=ON,