Estado: o conector PostgreSQL é Disponível (maturidade
GA-candidato): dá para cadastrar e usar hoje, sem liberação caso a caso. A construção de SQL e a sanitização de identificadores são provadas por teste. O que a extração real ainda depende é da credencial da sua origem e do ambiente de nuvem do workspace estar configurado — sem ele a execução falha com mensagem, em vez de fingir sucesso. Como todo o produto, ainda sem SLA público: custo/latência de nuvem = NÃO MEDIDO. Exemplos sintéticos.
Leia antes: Como os dados fluem · Catálogo de conectores.
O que é#
Conectar um banco PostgreSQL como fonte (modo pull, "Nós buscamos"): o Ingestia liga no seu banco com um usuário de leitura e extrai tabelas para a camada Bronze do seu workspace. Vale para PostgreSQL, e o mesmo fluxo cobre MySQL, SQL Server e Oracle (mudam só porta e alguns campos).
Para que serve#
Trazer dados operacionais (pedidos, clientes, estoque) do seu banco de produção para o datalake, sem exportar planilhas à mão, e mantê-los atualizados por agendamento.
Quando usar / quando não usar#
- Use quando: os dados moram num banco relacional acessível por rede (IP público com allowlist, Cloud SQL, VPN, ou via túnel SSH/bastion).
- Não use quando: você só tem arquivos soltos (use importar arquivo) ou os dados estão num SaaS com conector próprio (Omie, Bling, Meta Ads etc.).
Plano e permissões#
- Núcleo do produto · verificação de acesso (workspace ativo).
- Ação de carga passa pela chave de desligamento da capacidade execução de ingestão.
- Recomendado: um usuário de banco somente leitura dedicado ao Ingestia.
Pré-requisitos#
- Host e porta do PostgreSQL (porta padrão 5432).
- Database e, opcionalmente, o schema (default
public). - Usuário e senha com permissão de
SELECTnas tabelas desejadas. - Rota de rede — uma das opções:
- IP público + allowlist: liberar o IP de saída do Ingestia no seu firewall.
- Cloud SQL (IP/Proxy).
- VPN (IP privado).
- Túnel SSH (bastion): host/porta/usuário do bastion + chave privada SSH.
- SSL definido (recomendado
requireou superior).
Passo a passo#
- No console, vá em ETL/ELT → Conexões e escolha PostgreSQL (categoria Bancos de dados).
- Preencha os campos de conexão:
- Host — ex.:
db.suaempresa.example - Porta —
5432 - Database — ex.:
producao - Schema — ex.:
public(opcional) - Usuário — ex.:
ingestia_ro - Senha — a senha do usuário de leitura (é cifrada; nunca é exibida de novo)
- Host — ex.:
- Em SSL mode, escolha conforme sua política:
disable(sem SSL — evite),require,verify-caouverify-full.
- Em Como conectamos (rede), escolha
IP público + allowlist,Cloud SQL,VPNouTúnel SSH. Se for SSH, preencha host/porta/usuário do bastion e cole a chave privada SSH. - Clique em Testar conexão. O Ingestia abre a conexão (e o túnel, se for o caso) e lista as tabelas acessíveis.
- Com o teste OK, selecione as tabelas que quer ingerir e salve a fonte.
Exemplo (sintético)#
Engine: PostgreSQL
Host: db.suaempresa.example
Porta: 5432
Database: producao
Schema: public
Usuário: ingestia_ro
SSL mode: require
Rede: IP público + allowlistUsuário de leitura de exemplo (execute no seu banco):
CREATE USER ingestia_ro WITH PASSWORD 'troque-esta-senha';
GRANT CONNECT ON DATABASE producao TO ingestia_ro;
GRANT USAGE ON SCHEMA public TO ingestia_ro;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO ingestia_ro;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO ingestia_ro;Resultado esperado#
- Testar conexão retorna OK e a lista de tabelas (
schema.tabela) aparece para seleção. O Ingestia lê o catálogo viainformation_schema.tables, excluindo os schemas de sistema, com teto de 2.000 tabelas listadas. - Após uma carga, as linhas selecionadas aparecem na camada Bronze do seu workspace, prontas para o pipeline.
Limites e custos#
- Extração fragmentada (paginada):
batchSizedefault 5.000 (100–50.000);maxRowsdefault 200.000 (até 5.000.000). - Teto duro de paginação anti-loop.
- A chamada ao seu banco não é cobrada pela plataforma; a carga Bronze consome processamento de carga no datalake (cobrável). Custo faturado real em BRL = NÃO MEDIDO.
Segurança#
- Nomes de schema/tabela/coluna são sanitizados (só
[A-Za-z0-9_$]) antes de entrar no SQL — guarda anti-injeção. - A senha (e a chave SSH) é cifrada (AES-256-GCM) e redigida em qualquer erro/log.
- Prefira usuário somente leitura; o Ingestia só executa
SELECT. - Escopo por workspace: as linhas vão para o Bronze do seu workspace, nunca de outro.
Erros comuns#
| Sintoma | Causa provável | O que fazer |
|---|---|---|
connection refused / timeout | firewall/allowlist ou rota errada | Libere o IP de saída ou use SSH/VPN; confira host:porta |
password authentication failed | usuário/senha incorretos | Revise a credencial; teste o login fora do Ingestia |
no pg_hba.conf entry / SSL exigido | política de SSL do servidor | Ajuste o SSL mode para require/verify-* |
| Lista de tabelas vazia | usuário sem SELECT ou schema errado | Conceda USAGE/SELECT; confira o schema |
| Falha só via SSH | chave/bastion incorretos | Revise host/usuário do bastion e a chave privada |
Diagnóstico#
- Use Testar conexão para isolar o problema (rede vs. credencial vs. permissão) — ele nunca lança; devolve OK + tabelas, ou uma mensagem de erro já redigida.
- Um administrador pode checar a saúde profunda do ambiente em
GET /api/health?deep=1.
Relacionados#
Última revisão: 2026-09-08.