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:
| Driver | Pacote | Biblioteca |
|---|---|---|
| PostgreSQL Unicode | psqlodbc | /usr/lib/psqlodbcw.so |
| MariaDB Connector/ODBC | mariadb-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:
- Disponibilizar a biblioteca do driver — o arquivo
.sonativo de Linux baixado do site oficial do fornecedor, montado em um volume somente leitura no ambiente do DATTAX (100 MiB costumam bastar). - Registrar o driver — um arquivo
.inipor 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):
[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=1A partir daí o driver fica visível para todos os pipelines.
Como cadastrar uma conexão ODBC
No Pipeline Designer do DATTAX ( ou direto no canvas):
- Arraste ODBC (genérico) da paleta de fontes para o canvas.
- Escolha o modo de conexão:
- DSN — o nome de uma fonte já declarada em
/etc/odbc.inipelo time de operações; ou - Connection-string — a string completa, sem DSN, por exemplo:
- DSN — o nome de uma fonte já declarada em
Driver={PostgreSQL Unicode};Server=db.empresa.com;Port=5432;Database=prod;Uid=datta;Pwd=...- Informe a SQL Query que extrai os dados.
- 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, comREPLACE(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:
# Confirmar que o isql encontra o DSN
isql -v "MeuDSN"
# Listar drivers instalados
odbcinst -q -d
# Listar DSNs configurados
odbcinst -q -sErros comuns:
| Erro | Causa | O que fazer |
|---|---|---|
IM002 ... not found | O DSN informado não existe em odbc.ini | Conferir o nome ou pedir o registro ao time de operações |
IM003 ... could not load driver | A biblioteca do driver não está no caminho esperado | Pedir ao time de operações para montar/verificar a biblioteca do driver |
S1090 invalid string or buffer length | Driver incompatível com o unixODBC 2.3+ | Solicitar uma versão mais recente do driver ao fornecedor |
08001 unable to connect | Rede ou firewall bloqueando o acesso à fonte | Conferir host, porta e a liberação de rede (faixa de IPs) até a fonte |