postgresql · sql server · mysql · oracle¶
fonte
lê dados de bancos sql relacionais: postgresql, sql server / azure sql, mysql / mariadb e oracle database. os quatro aparecem como conectores separados na paleta (cada um com seu próprio ícone e conexão), mas compartilham a mesma mecânica de extração — a única diferença prática entre eles é o dialeto sql que você escreve na query.
quando usar¶
- extrair tabelas operacionais de um sistema legado ou de terceiros para consolidar no seu lakehouse
- executar queries analíticas complexas (joins, agregações) direto na origem como fonte de um pipeline
- sincronizar dados entre bancos de tecnologias diferentes sem escrever integração customizada
- alimentar a camada bronze do lakehouse com uma extração incremental agendada (watermark)
configuração¶
| campo | tipo | obrigatório | descrição |
|---|---|---|---|
credential_id |
uuid | sim | conexão/credencial criada em configurações → conexões |
query |
string | sim | sql a executar · suporta {{variavel}} |
max_rows |
number | não | limite de segurança de linhas retornadas |
store_as |
string | não | nome de variável de pipeline para reaproveitar o resultado |
extração incremental (watermark)¶
| campo | tipo | descrição |
|---|---|---|
watermark_column |
string | coluna com timestamp/id crescente (ex: updated_at) — habilita extração incremental por alto-water-mark |
watermark_var |
string | variável de pipeline injetada com o último valor visto (padrão: watermark) |
não é cdc
a extração incremental via watermark é por polling: a cada execução, o pipeline injeta {{ pipeline.watermark }} na query e você mesmo filtra (WHERE updated_at > '{{ pipeline.watermark }}'). não é captura de mudanças em log (cdc) — não captura deletes nem updates que não avancem a coluna de watermark.
bancos suportados¶
| banco | conector na paleta | observação de sintaxe |
|---|---|---|
| PostgreSQL | PostgreSQL |
sql padrão, LIMIT |
| SQL Server / Azure SQL | SQL Server |
usa TOP N em vez de LIMIT; identificadores entre colchetes [coluna] são aceitos |
| MySQL / MariaDB | MySQL / MariaDB |
sql padrão, LIMIT; aspas de identificador com crase `coluna` |
| Oracle Database | Oracle DB |
usa ROWNUM ou FETCH FIRST N ROWS ONLY; FROM DUAL para expressões sem tabela |
exemplos por dialeto¶
exemplos¶
query com join¶
{
"credential_id": "uuid-da-conexao",
"query": "SELECT p.id, p.nome, c.razao_social FROM pedidos p JOIN clientes c ON c.id = p.cliente_id WHERE p.status = 'pendente'"
}
extração incremental por watermark¶
{
"credential_id": "uuid-da-conexao",
"query": "SELECT * FROM vendas WHERE atualizado_em > '{{ pipeline.watermark }}' ORDER BY atualizado_em",
"watermark_column": "atualizado_em",
"watermark_var": "watermark"
}
a cada execução do pipeline, {{ pipeline.watermark }} é substituído automaticamente pelo maior valor de atualizado_em já processado na execução anterior.
variáveis de pipeline em queries¶
parâmetros de data, filtros e qualquer valor dinâmico podem ser injetados via {{variavel}}:
SELECT *
FROM vendas
WHERE data_venda BETWEEN '{{data_inicio}}' AND '{{data_fim}}'
AND filial_id = {{filial_id}}
sql injection
as variáveis de pipeline são substituídas por interpolação de string segura (escaping automático de literais) — mesmo assim, use apenas variáveis controladas pelo seu próprio pipeline. nunca exponha input de usuário final diretamente em queries sem validação prévia.
configurando a conexão¶
antes de usar qualquer um dos quatro conectores, crie a conexão em configurações → conexões:
| campo | descrição |
|---|---|
| tipo | postgresql, sqlserver, mysql ou oracle |
| host | endereço do servidor |
| port | porta (padrão postgres: 5432, sql server: 1433, mysql: 3306, oracle: 1521) |
| database | nome do banco |
| credencial | usuário e senha, criptografados no vault |
performance¶
- para tabelas grandes, prefira filtros na
query(WHERE, watermark) aSELECT *sem filtro - adicione um limite (
LIMIT/TOP/FETCH FIRST) na query ao testar o pipeline no builder - índices na coluna de filtro de data/watermark reduzem drasticamente o tempo de extração
- em oracle e sql server, prefira paginação nativa do dialeto (
FETCH FIRST,TOP) aORDER BYsem limite em tabelas muito grandes