это моя конфигурация kafka JdbcSinkConnector:
{
"name": "UAA_USER_WRITER",
"config": {
"connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
"quote.sql.identifier": "never",
"table.name.format": "uaa_user",
"connection.password": "*******",
"connection.user": "postgres",
"topics": "UAA_USER_STREAM",
"name": "UAA_USER_WRITER",
"connection.url": "jdbc:postgresql://localhost:5432/uaa",
"key.converter": "org.apache.kafka.connect.storage.StringConverter"
},
"tasks": [{
"connector": "UAA_USER_WRITER",
"task": 0
}],
"type": "sink"
}
как вы видите, я установил для "quote.sql.identifier" значение never, но все же он создает запросы с двойными кавычками, тогда я получаю эту ошибку:
PSQLException: ERROR: column "ID" of relation "uaa_user" does not exist
Обновлено:
Я добавил их к разъему UAA_USER_WRITER
(как показано выше), и теперь он работает безупречно:
'transforms' = 'RenameField',
'transforms.RenameField.type' = 'org.apache.kafka.connect.transforms.ReplaceField$Value',
'transforms.RenameField.renames' = 'ID:id,ACTIVATION_CODE:activation_code,PASSWORD:password,REGISTER_DATE:register_date,USERNAME:username,DELETE_DATE:delete_date,SUBMIT_DATE:submit_date,BUSINESS_STATUS:business_status,IS_ACTIVE:is_active',
так что это означает, что проблема заключается в двойных кавычках, и, к сожалению, "quote.sql.identifier": "never"
не может помочь.
у меня слишком много таблиц, и писать преобразования переименования для каждой таблицы действительно утомительно
одна из записей в теме UAA_USER_STREAM
(не знаю, достаточно ли):
rowtime: 2021/04/01 13:55:53.597 Z, key: <null>, value: {"ID": ****, "ACTIVATION_CODE": ****, "PASSWORD": ****, "REGISTER_DATE": ****, "USERNAME": ****, "DELETE_DATE": ****, "SUBMIT_DATE": ****, "BU
SINESS_STATUS": ****, "IS_ACTIVE": ****}, partition: 0
Вы уверены, что в этом проблема? Возможно, схема ваших данных не соответствует цели. Как выглядит таблица в postgres по сравнению с данными в теме? отредактируйте свой вопрос, включив в него примеры каждого из них.