Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

570
Visualizações
Kafka Connect JDBC Sink quote.sql.identifiers no funciona

Estoy tratando de usar Kafka Connect para sincronizar datos de una base de datos DB2 antigua a una base de datos Postgres usando los conectores JDBC Source and Sink. Funciona bien, pero solo si soy muy estricto con el caso que uso para los nombres de las tablas.

Por ejemplo, tengo una tabla en DB2 llamada ACCIÓN y también existe en Postgres con las mismas columnas, etc. La única diferencia es que en DB2 es ACTION en mayúsculas y en Postgres es action en minúsculas.

Aquí hay un archivo receptor que funciona:

 { "name": "jdbc_sink_pg_action", "config": { "_comment": "The JDBC connector class", "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector", "_comment": "How to serialise the value of keys ", "key.converter": "org.apache.kafka.connect.json.JsonConverter", "_comment": "As above, but for the value of the message. Note that these key/value serialisation settings can be set globally for Connect and thus omitted for individual connector configs to make them shorter and clearer", "value.converter": "org.apache.kafka.connect.json.JsonConverter", "_comment": " --- JDBC-specific configuration below here --- ", "_comment": "JDBC connection URL.", "connection.url": "jdbc:postgresql://localhost:5435/postgres", "connection.user": "postgres", "connection.password": "*****", "topics": "ACTION", "table.name.format": "action", "_comment": "The insertion mode to use", "insert.mode": "upsert", "_comment": "The primary key mode", "pk.mode": "record_value", "_comment": "List of comma-separated primary key field names. The runtime interpretation of this config depends on the pk.mode", "pk.fields": "ACTION_ID", "quote.sql.identifiers": "never" } }

Esto está bien, pero no es muy flexible. Por ejemplo, tengo muchas otras tablas y me gustaría sincronizarlas también, pero no quiero crear un archivo conector para todas y cada una de las tablas. Así que trato de usar:

"table.name.format": "${topic}",

Cuando hago esto, aparece el siguiente error en los registros cuando intento cargar mi conector receptor:

Causado por: org.apache.kafka.connect.errors.ConnectException: Falta la tabla "ACCIÓN" y la creación automática está deshabilitada

Así que me parece que "quote.sql.identifiers": "never" en realidad no funciona; de lo contrario, la consulta que está haciendo el conector receptor no estaría entre comillas y permitiría cualquier caso (se convertiría a menor).

¿Por qué esto no funciona? Obtengo los mismos resultados si solo uso ACTION como table.name.format.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

El nombre de su tabla de PostgreSQL ( action ) no es igual al nombre del tema ( ACTION ). El conector JDBC de Kafka Connect usa el método getTables() para verificar si existe una tabla, donde tableNamePattern mayúsculas y minúsculas (de acuerdo con los documentos: must match the table name as it is stored in the database ).

Puede usar la transformación ChangeTopicCase de Kafka Connect Common Transformations .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda