PT EN
Voltar ao site

ODBC no DATTAX (Linux)

Nem toda fonte de dados tem driver JDBC — sistemas legados, ERPs antigos e bancos de nicho muitas vezes só publicam driver ODBC. Em vez de deixar esses dados de fora, o DATTAX inclui um conector ODBC (genérico) que conversa com qualquer driver ODBC nativo de Linux: você aponta o driver, escreve a consulta SQL e os dados entram no mesmo pipeline que todas as outras fontes.

Por baixo, o DATTAX usa o cliente isql do unixODBC, já instalado na imagem base eclipse-temurin-datta. Essa escolha evita a dependência da ponte JDBC-ODBC embutida (removida a partir do JDK 8) e funciona com qualquer driver ODBC nativo de Linux.

Drivers já incluídos

A plataforma já vem com dois drivers ODBC prontos para uso:

DriverPacoteBiblioteca
PostgreSQL Unicodepsqlodbc/usr/lib/psqlodbcw.so
MariaDB Connector/ODBCmariadb-connector-odbc/usr/lib/libmaodbc.so

Ambos já estão registrados no arquivo /etc/odbcinst.ini, nas entradas [PostgreSQL Unicode] e [MariaDB] — nenhum preparo é necessário.

Drivers de outros fornecedores

Para Oracle, SQL Server, Db2 e outros bancos com driver ODBC proprietário, a instalação é feita pelo time de operações da plataforma. São dois passos:

  1. Disponibilizar a biblioteca do driver — o arquivo .so nativo de Linux baixado do site oficial do fornecedor, montado em um volume somente leitura no ambiente do DATTAX (100 MiB costumam bastar).
  2. Registrar o driver — um arquivo .ini por fornecedor em /etc/odbcinst.d/<fornecedor>.ini, com o nome de registro (que você usará depois na connection-string) e o caminho da biblioteca.

Exemplo de registro para o Microsoft SQL Server (msodbcsql18):

ini
[ODBC Driver 18 for SQL Server]
Description=Microsoft ODBC Driver 18 for SQL Server
Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.4.so.1.1
UsageCount=1

A partir daí o driver fica visível para todos os pipelines.

Como cadastrar uma conexão ODBC

No Pipeline Designer do DATTAX (SistemaConexões ou direto no canvas):

  1. Arraste ODBC (genérico) da paleta de fontes para o canvas.
  2. Escolha o modo de conexão:
    • DSN — o nome de uma fonte já declarada em /etc/odbc.ini pelo time de operações; ou
    • Connection-string — a string completa, sem DSN, por exemplo:
     Driver={PostgreSQL Unicode};Server=db.empresa.com;Port=5432;Database=prod;Uid=datta;Pwd=...
  1. Informe a SQL Query que extrai os dados.
  2. Use o preview para conferir o resultado e execute o pipeline.

Limitações

  • A saída do isql é texto formatado — os tipos originais não são preservados (tudo vira string). Use o transform TypeConvert no pipeline para inferir inteiros, datas e decimais quando precisar.
  • Valores com o caractere pipe (|) embutido podem confundir a leitura. Trate na própria consulta (por exemplo, com REPLACE(coluna, '|', '_')) — a troca do delimitador para TAB na configuração do conector ODBC está prevista para a próxima versão.
  • A latência é maior que a de um driver JDBC direto. Para fontes grandes, prefira o driver JDBC do fornecedor via JdbcSource — veja o catálogo de drivers — e reserve o ODBC para fontes que não têm alternativa.

Quando algo não funciona

O diagnóstico é feito com os utilitários do próprio unixODBC, executados no ambiente do Pipeline Designer pelo console da plataforma:

bash
# Confirmar que o isql encontra o DSN
isql -v "MeuDSN"

# Listar drivers instalados
odbcinst -q -d

# Listar DSNs configurados
odbcinst -q -s

Erros comuns:

ErroCausaO que fazer
IM002 ... not foundO DSN informado não existe em odbc.iniConferir o nome ou pedir o registro ao time de operações
IM003 ... could not load driverA biblioteca do driver não está no caminho esperadoPedir ao time de operações para montar/verificar a biblioteca do driver
S1090 invalid string or buffer lengthDriver incompatível com o unixODBC 2.3+Solicitar uma versão mais recente do driver ao fornecedor
08001 unable to connectRede ou firewall bloqueando o acesso à fonteConferir host, porta e a liberação de rede (faixa de IPs) até a fonte