Digibee Documentation
Solicitar documentaçãoAgendar demo
Português
Português
  • Primeiros passos
  • Destaques
    • Release notes
      • Release notes 2025
        • Maio
        • Abril
        • Março
        • Fevereiro
        • Janeiro
      • Release notes 2024
        • Dezembro
        • Novembro
        • Outubro
        • Setembro
        • Agosto
          • Lançamento de conectores 20/08/2024
        • Julho
        • Junho
        • Maio
        • Abril
        • Março
        • Fevereiro
        • Janeiro
      • Release notes 2023
        • Dezembro
        • Novembro
        • Outubro
        • Setembro
        • Agosto
        • Julho
        • Junho
        • Maio
        • Abril
        • Março
        • Fevereiro
        • Janeiro
      • Release notes 2022
        • Dezembro
        • Novembro
        • Outubro
        • Setembro
        • Agosto
        • Julho
        • Junho
        • Maio
        • Abril
        • Março
        • Fevereiro
        • Janeiro
      • Release notes 2021
      • Release notes 2020
    • AI Pair Programmer
    • Digibeectl
      • Comece a usar
        • Como instalar o Digibeectl no Windows
      • Digibeectl sintaxe
      • Operações do Digibeectl
  • Digibee em ação
    • Casos Práticos de Uso
      • Melhorando o desempenho de integrações com paginação de API
      • Automatize o armazenamento de arquivos com a Digibee
      • Estratégia de reprocessamento em integrações orientadas a eventos
      • Práticas essenciais para proteger informações sensíveis em pipelines com a Digibee
      • OAuth2 para acesso seguro a APIs
      • Proteja suas APIs com JWT na Digibee
      • Melhores práticas de integração para desenvolvedores na Digibee Integration Platform
      • Como usar Arquitetura orientada a eventos na Digibee Integration Platform
      • Download dinâmico de arquivos com a Digibee
      • Microsserviços: Padrão Circuit Breaker para melhorar a resiliência
      • Estratégia de tratamento de erros em integrações orientadas a eventos
    • Solução de problemas
      • Orientações para integrações
        • Como resolver problemas comuns em pipelines
        • Como resolver o Erro 409: “You cannot update a pipeline that is not on draft mode”
        • Como resolver o erro "Pipeline execution was aborted"
        • Autenticação integrada com o Microsoft Entra ID
        • Como resolver o erro "Failed to initialize pool: ONS configuration failed"
        • Como executar o mapeamento de endereços IP com o banco de dados Progress
        • Como construir fluxos de integração que enviam notificações de erro
        • Como enviar logs para serviços externos
        • Como o JSONPath difere nos conectores e no Painel de execução
        • Usando JSONPath para validar números com dígitos iniciais específicos
        • Como analisar o erro “Network error: Failed to fetch” no Painel de execução
        • Como trabalhar com requisições de payloads superiores a 5MB
        • Como configurar o Microsoft Entra ID para exibir grupos na Digibee Integration Platform
        • Como montar uma mensagem HL7
      • Comportamento e configuração de conectores
        • Timeout no conector Pipeline Executor
        • Como usar DISTINCT e COUNT no Object Store
        • Entendendo o @@DGB_TRUNCATED@@ na Digibee Integration Platform
        • Como resolver nomes sem DNS - REST, SOAP, SAP (web protocols)
        • Como ler e escrever arquivos dentro de pastas
        • AuthToken Reuse para conector Salesforce
        • Como resolver o erro "Invalid payload" na integração de API
        • Bancos de dados suportados
          • Funções e utilidades para banco de dados
      • Implementação e exemplos de uso de conectores
        • Google Storage: Cenários de uso
        • DB V2: Cenários de uso
        • For Each: Exemplo de uso
        • Template e suas utilizações
        • Implementação do Digibee JWT
        • Email V1: Exemplos de uso (Descontinuado)
      • Aplicações do JOLT
        • Transformer: Conhecendo o JOLT
        • Transformer: Transformações com JOLT
        • Transformer: Adicionar valores aos elementos da lista
        • Transformer: Visão geral das operations
        • Transformer: Formatação de datas utilizando split e concat
        • Transformer: Lógica IF-ELSE simples com JOLT
      • Dicas de acesso e desempenho da Plataforma
        • Como resolver problemas para fazer o login na Digibee Integration Platform
        • Como receber atualizações da Status Page da Digibee
        • Como executar a limpeza de cache da Digibee Integration Platform
      • Orientações sobre governança e solução de problemas
        • Como consumir pipelines com Internal API usando ZTNA
        • Como usar a API Interna com ou sem uma VPN
        • Como gerar, converter e cadastrar SSH Keys
        • Autenticação mTLS
          • Como configurar o mTLS na Digibee Integration Platform
          • Perguntas frequentes: Certificados no mTLS
        • Como conectar a Digibee ao Oracle RAC
        • Como conectar a Digibee à SAP
        • Como conectar a Digibee ao MongoDB Atlas usando VPN
        • Como gerenciar IPs na Digibee Integration Platform
        • Configurando Account Dropbox
        • Como usar sua conta do Gmail com o componente de e-mail Digibee (SMTP)
        • Como utilizar a política CORS na Digibee Integration Platform
      • Cenários de implantação
        • Como solucionar erros de “Out of memory” na implantação
        • Aviso de conflito de rotas
    • Boas práticas
      • Boas práticas para a construção de um pipeline
      • Boas práticas ao validar mensagens em um pipeline consumer
      • Evitando loops e maximizando a eficiência dos pipelines
      • Nomenclatura: Global, Contas (Accounts) e Consumers (Chaves de API)
      • Tutorial de paginação
        • Tutorial de paginação - parte 1
        • Tutorial de paginação - parte 2
        • Tutorial de paginação - parte 3
        • Tutorial de paginação - parte 4
      • Exemplos de paginação
      • Arquitetura orientada a eventos
      • Modelo de notificação em integrações orientadas a eventos
      • Modelo de integração OAuth2 com a Digibee
      • Boas práticas para tratamento de erros em pipelines
    • Digibee Academy
      • Integration Developer Bootcamp
  • Guias de referência
    • Conectores
      • AWS
        • S3 Storage
        • SQS
        • AWS Secrets Manager
        • AWS Athena
        • AWS CloudWatch
        • AWS Elastic Container Service (ECS)
        • AWS Eventbridge
        • AWS Identity and Access Management (IAM)
        • AWS Kinesis
        • AWS Kinesis Firehose
        • AWS Key Management Service (KMS)
        • AWS Lambda
        • AWS MQ
        • AWS Simple Email Service (SES)
        • AWS Simple Notification System (SNS)
        • AWS Security Token Service (STS)
        • AWS Translate
      • Azure
        • Azure CosmosDB
        • Azure Event Hubs
        • Azure Key Vault
        • Azure ServiceBus
        • Azure Storage Datalake Service
        • Azure Storage Queue Service
      • Enterprise applications
        • SAP
        • Salesforce
        • Braintree
        • Facebook
        • GitHub
        • Jira
        • ServiceNow
        • Slack
        • Telegram
        • Twillio
        • WhatsApp
        • Wordpress
        • Workday
        • Zendesk
      • File storage
        • Blob Storage (Azure)
        • Digibee Storage
        • Dropbox
        • FTP
        • Google Drive
        • Google Storage
        • OneDrive
        • SFTP
        • WebDav V2
        • WebDav (Descontinuado)
      • Files
        • Append Files
        • Avro File Reader
        • Avro File Writer
        • CSV to Excel
        • Excel
        • File Reader
        • File Writer
        • GZIP V2
        • GZIP V1 (Descontinuado)
        • Parquet File Reader
        • Parquet File Writer
        • Stream Avro File Reader
        • Stream Excel
        • Stream File Reader
        • Stream File Reader Pattern
        • Stream JSON File Reader
        • Stream Parquet File Reader
        • Stream XML File Reader
        • XML Schema Validator
        • ZIP File
        • NFS
      • Flow
        • Delayer
      • Google/GCP
        • Google BigQuery
        • Google BigQuery Standard SQL
        • Google Calendar
        • Google Cloud Functions
        • Google Mail
        • Google PubSub
        • Google Secret Manager
        • Google Sheets
      • Industry solutions
        • FHIR (Beta)
        • Gupy Public API
        • HL7
        • HubSpot: Sales e CMS
        • Mailgun API
        • Oracle NetSuite (Beta)
        • Orderful
        • Protheus: Billing e Inventory of Cost
      • Logic
        • Block Execution
        • Choice
        • Do While
        • For Each
        • Retry
        • Parallel Execution
      • Queues and messaging
        • Event Publisher
        • JMS
        • Kafka
        • RabbitMQ
      • Security
        • AES Cryptography
        • Asymmetric Cryptography
        • CMS
        • Digital Signature
        • JWT (Descontinuado)
        • JWT V2
        • Google IAP Token
        • Hash
        • Digibee JWT (Generate and Decode)
        • LDAP
        • PBE Cryptography
        • PGP
        • RSA Cryptography
        • Symmetric Cryptography
      • Structured data
        • CassandraDB
        • DB V2
        • DB V1 (Descontinuado)
        • DynamoDB
        • Google Big Table
        • Memcached
        • MongoDB
        • Object Store
        • Relationship
        • Session Management
        • Stored Procedure
        • Stream DB V3
        • Stream DB V1 (Descontinuado)
        • ArangoDb
        • Caffeine Cache
        • Caffeine LoadCache
        • Couchbase
        • CouchDB
        • Ehcache
        • InfluxDB
      • Tools
        • Assert V2
        • Assert V1 (Descontinuado)
        • Base64
        • CSV to JSON V2
        • CSV to JSON V1 (Descontinuado)
        • HL7 Message Transformer (Beta)
        • HTML to PDF
        • Transformer (JOLT) V2
        • JSLT
        • JSON String to JSON Transformer
        • JSON to JSON String Transformer
        • JSON to XML Transformer
        • JSON to CSV V2
        • JSON to CSV Transformer (Descontinuado)
        • JSON Path Transformer V2
        • JSON Path Transformer
        • JSON Transformer
        • Log
        • Pipeline Executor
        • QuickFix (Beta)
        • SSH Remote Command
        • Script (JavaScript)
        • Secure PDF
        • Store Account
        • Template Transformer
        • Throw Error
        • Transformer (JOLT)
        • Validator V1 (Descontinuado)
        • Validator V2
        • XML to JSON Transformer
        • XML Transformer
        • JSON Generator (Mock)
      • Web protocols
        • Email V2
        • Email V1 (Descontinuado)
        • REST V2
        • REST V1 (Descontinuado)
        • SOAP V3
        • SOAP V2
        • SOAP V1 (Descontinuado)
        • WGet (Download HTTP)
        • gRPC
    • Triggers
      • Web Protocols
        • API Trigger
        • Email Trigger
        • Email Trigger V2
        • HTTP Trigger
        • HTTP File Trigger
          • HTTP File Trigger - Downloads
          • HTTP File Trigger - Uploads
        • REST Trigger
      • Scheduling
        • Scheduler Trigger
      • Messaging and Events
        • Event Trigger
        • JMS Trigger
        • Kafka Trigger
        • RabbitMQ Trigger
      • Others
        • DynamoDB Streams Trigger
        • HL7 Trigger
        • Salesforce Trigger - Events
    • Double Braces
      • Como referenciar dados usando Double Braces
      • Funções Double Braces
        • Funções matemáticas
        • Funções de utilidades
        • Funções numéricas
        • Funções de string
        • Funções de JSON
        • Funções de data
        • Funções de comparação
        • Funções de arquivo
        • Funções de condição
      • Preenchimento automático de expressões Double Braces
  • Ciclo de desenvolvimento
    • Build
      • Canvas
        • Assistente de IA
        • Smart Connector User Experience
        • Painel de execução
        • Modos de Design e Inspeção
        • Linter: Validação de construção do canvas
        • Mock de Conectores
      • Pipeline
        • Como criar um pipeline
        • Como criar um pipeline usando uma especificação OpenAPI
        • Como criar um projeto
        • Histórico de versões do pipeline
        • Versionamento de pipelines
        • Processamento de mensagens
        • Subpipelines
      • Cápsulas
        • Como usar Cápsulas
          • Como criar uma coleção de Cápsulas
            • Dimensões do cabeçalho da Cápsula
          • Como criar um grupo de Cápsulas
          • Como configurar uma Cápsula
          • Como construir uma Cápsula
          • Como testar uma Cápsula
          • Como salvar uma Cápsula
          • Como publicar uma Cápsula
          • Como mudar uma Cápsula de coleção ou grupo
          • Como arquivar e restaurar uma Cápsula
        • Versionamento de Cápsulas
        • Cápsulas públicas
          • SAP
          • Digibee Tools
          • Google Sheets
          • Gupy
          • Enviar alerta por email
          • Totvs Live
          • Canvas LMS
        • Assistente de IA para geração de documentação de cápsulas
    • Run
      • Conceitos de Run
        • Autoscalling
      • Implantação
        • Implantando um pipeline
        • Como reimplantar um pipeline
        • Como promover pipelines entre ambientes
        • Como verificar o Histórico de implantação do pipeline
        • Como fazer rollback de versão implantada
        • Como utilizar as funções avançadas do histórico de implantação
        • Status de implantação do pipeline
      • Como os alertas funcionam nos pipelines em Run
    • Monitor
      • Monitor Insights (Beta)
      • Execuções concluídas
        • Download dos logs de execução de pipeline
      • Pipeline logs
      • Pipeline Metrics
        • API de métricas de pipeline
          • Como configurar API de métricas Digibee com Datadog
          • Como configurar API de métricas Digibee com Prometheus
        • Latência de Conector
      • Alertas
        • Como criar um alerta
        • Como editar um alerta
        • Como ativar, desativar ou duplicar um alerta
        • Como excluir um alerta
        • Como configurar alertas no Slack
        • Como configurar alertas no Telegram
        • Como configurar alertas via webhook
        • Métricas disponíveis
        • Boas práticas para alertas
        • Casos de uso para alertas
      • Monitoramento de conexões de VPN
        • Alertas para métricas de VPN
  • Gerenciamento de conectividade
    • Conectividade
    • Zero Trust Network Access (ZTNA)
      • Pré-requisitos para usar o ZTNA
      • Como visualizar conexões (Edge Routers)
      • Como visualizar Network Mappings associados com um Edge Router
      • Como adicionar novas conexões em ZTNA (Edge Routers)
      • Como deletar conexões em ZTNA (Edge Routers)
      • Como visualizar rotas (Network mapping)
      • Como adicionar novas rotas (Network Mapping)
      • Como adicionar rotas em lote para ZTNA
      • Como editar rotas (Network Mapping)
      • Como deletar rotas (Network Mapping)
      • Como gerar novas chaves (Edge Router)
      • Como mudar o ambiente dos Edge Routers
      • Fluxo Inverso (Inverse Flow) de ZTNA
      • Grupos de ZTNA
    • Virtual Private Network (VPN)
  • Administração da plataforma
    • Administração
      • Auditoria
      • Controle de acesso
        • Usuários
        • Grupos
        • Papéis
          • Lista de permissões por serviço
          • Papéis e responsabilidades: Governança e identificação de pessoas-chave
      • Integração com provedores de identidades
        • Como integrar um provedor de identidade
        • Regras de autenticação
        • Integração de grupos IdP com grupos Digibee
          • Como criar uma integração de grupo
          • Como testar uma integração de grupo
          • Como habilitar uma integração de grupo
          • Como editar uma integração de grupo
          • Como remover uma integração de grupo
      • Autenticação e autorização de usuários
        • Como habilitar e desabilitar a autenticação de dois fatores
        • Fluxo de login
      • Grupos da organização
    • Configurações
      • Globals
        • Como criar Globals
        • Como editar ou excluir Globals
        • Como usar Globals
      • Contas (Accounts)
        • Configurando cada tipo de conta
        • Monitore alterações nas configurações da conta em pipelines implantados
        • Arquitetura OAuth2
          • Cadastro de novos provedores OAuth
      • Consumers (Chaves de API)
      • Modelos de Relacionamento
      • Multi-Instância
        • Implantando um pipeline de multi-instância
      • Transmissão de Logs
        • Como usar a Transmissão de Logs com o Datadog
    • Governança
      • Políticas
        • Segurança
          • Política de acesso à APIs internas
          • Política de acesso à APIs externas
          • Política de campos sensíveis
        • Transformação
          • Cabeçalho HTTP personalizado
          • Cabeçalho HTTP CORS
        • Política de Limite de réplicas
    • Licenciamento
      • Modelos de licenciamento
        • Modelo baseado em consumo
      • Capacidade e cotas
      • Consumo de licenças
    • Digibee APIs
      • Como criar credenciais de API
  • Conceitos da Digibee
    • Pipeline Engine
      • Digibee Integration Platform Pipeline Engine v2
      • Suporte a Credenciais Dinâmicas (Beta Restrito)
    • SaaS dedicado na Digibee Integration Platform
      • Arquitetura da Digibee Integration Platform no modelo Saas dedicado
      • Requisitos para o modelo SaaS dedicado da Digibee
      • Site-to-Site VPN para suporte de clientes SaaS dedicado
      • Responsabilidades dos cliente Saas dedicado
      • Política de Imagens dos Nodes Kubernetes Customizados
      • Instalação do Digibee Dedicated SaaS no AWS
        • Como instalar os requisitos antes da instalação da Digibee Integration Platform no EKS
        • Permissões para usar a Digibee Integration Platform no EKS
        • Como criar nós customizados para EKS (Golden Images)
    • Introdução ao ZTNA
  • Ajuda & FAQ
    • Suporte ao Cliente Digibee
    • Solicitar documentação, sugerir nova feature ou enviar feedback
    • Programa Beta
    • Segurança e conformidade
    • Sobre a Digibee
Fornecido por GitBook
Nesta página

Isto foi útil?

  1. Digibee em ação
  2. Solução de problemas
  3. Implementação e exemplos de uso de conectores

DB V2: Cenários de uso

Saiba mais sobre cenários práticos de uso do conector DB V2, desde a definição de propriedades personalizadas de conexão até o tratamento de tipos de dados personalizados.

AnteriorGoogle Storage: Cenários de usoPróximoFor Each: Exemplo de uso

Atualizado há 15 dias

Isto foi útil?

O é um conector que oferece suporte às operações SELECT, INSERT, DELETE e UPDATE, além da execução de procedures, retornando os resultados em uma estrutura JSON. Para a lista completa de bancos de dados compatíveis, consulte a documentação de .

Este documento apresenta diversos cenários de uso do conector, como a definição de propriedades personalizadas de conexão e o tratamento de tipos de dados personalizados.

Confira abaixo os cenários de uso compatíveis:

Configurando uma operação QUERY com uma instrução SELECT

Use o DB V2 para executar uma consulta SELECT sempre que precisar recuperar dados de um banco de dados configurado.

Para isso, conecte o DB V2 ao trigger e configure-o da seguinte forma:

Aba General:

  • Account Type: Selecione o tipo de conta configurado.

  • Account: Escolha a conta usada para autenticar no banco de dados.

Aba Operation:

  • Type: Selecione QUERY.

  • Database URL: Informe a URL do banco de dados, como jdbc:mysql://myserver/mydb.

  • SQL Statement: Informe a instrução SQL, por exemplo: SELECT * FROM CLIENTES.

Após a , a saída será:

{
  "data": [
    {
      "uf": "SP",
      "codigo": 1,
      "cidade": "Osasco",
      "logradouro": "Rua Laranjeiras",
      "name": "João Bosco",
      "due_date": "2019-03-27",
      "email": "joao.bosco@digibee.com.br",
      "cep": "XXXXX-XXX"
    },
    {
      "uf": "SP",
      "codigo": 2,
      "cidade": "São Paulo",
      "logradouro": "Rua João Bosco",
      "name": "Roberto Carlos",
      "due_date": "2019-03-27",
      "email": "roberto.carlos@digibee.com.br",
      "cep": "XXXXX-XXX"
    }
  ],
  "updateCount": 0,
  "rowCount": 2
}

Entendendo a saída

A consulta retorna um objeto JSON com três propriedades principais:

  • data: Um array de objetos que representam as linhas retornadas pela consulta. Cada objeto contém propriedades correspondentes às colunas do SELECT. Por exemplo, se a consulta for SELECT name FROM CLIENTES, cada objeto no array terá apenas a propriedade name.

  • updateCount: A quantidade de linhas afetadas pela consulta. Neste caso, o valor é 0 porque a operação SELECT não altera a tabela.

  • rowCount: A quantidade de linhas retornadas pela consulta.

Configurando a operação QUERY com uma instrução UPDATE

Use o DB V2 para atualizar registros no seu banco de dados executando uma instrução UPDATE.

Para isso, conecte o DB V2 ao trigger e configure-o da seguinte forma:

Aba General:

  • Account Type: Selecione o tipo de conta configurado.

  • Account: Escolha a conta usada para autenticar no banco de dados.

Aba Operation:

  • Type: Selecione QUERY.

  • Database URL: Informe a URL do banco de dados, como jdbc:mysql://myserver/mydb.

  • SQL Statement: Informe a instrução SQL, por exemplo: UPDATE CLIENTES SET uf='SP' WHERE uf is null.

Após a , a saída será:

{
  "data": null,
  "updateCount": 5,
  "rowCount": 0
}

Entendendo a saída

  • updateCount: Confirma que cinco linhas na tabela foram modificadas neste exemplo.

Configurando a operação QUERY com uma instrução DELETE

Use o DB V2 para remover dados do seu banco de dados com uma instrução DELETE.

Para isso, conecte o DB V2 ao trigger e configure-o da seguinte forma:

Aba General:

  • Account Type: Selecione o tipo de conta configurado.

  • Account: Escolha a conta usada para autenticar no banco de dados.

Aba Operation:

  • Type: Selecione QUERY.

  • Database URL: Informe a URL do banco de dados, como jdbc:mysql://myserver/mydb.

  • SQL Statement: Informe a instrução SQL, por exemplo: DELETE FROM CLIENTES WHERE codigo='111111.

Após a , a saída será:

{
  "data": null,
  "updateCount": 1,
  "rowCount": 0
}

Entendendo a saída

  • updateCount: Confirma que uma linha foi excluída da tabela neste exemplo.

Configurando a operação QUERY com uma instrução INSERT

Use o DB V2 para inserir novos registros no seu banco de dados com uma instrução INSERT.

Para isso, conecte o DB V2 ao trigger e configure-o da seguinte forma:

Aba General:

  • Account Type: Selecione o tipo de conta configurado.

  • Account: Escolha a conta usada para autenticar no banco de dados.

Aba Operation:

  • Type: Selecione QUERY.

  • Database URL: Informe a URL do banco de dados, como jdbc:mysql://myserver/mydb.

  • SQL Statement: Informe a instrução SQL, por exemplo: INSERT INTO CLIENTES (name, email) VALUES ('My Name', 'myname@email.com').

Após a , a saída será:

{
  "data": null,
  "updateCount": 1,
  "rowCount": 0
}

Entendendo a saída

  • updateCount: Confirma que uma linha foi criada na tabela neste exemplo.

Mantendo a conexão ativa para drivers antigos ou instáveis

Se o seu banco de dados for incompatível com JDBC 4.0 ou tiver dificuldades para manter uma conexão estável, você pode usar o DB V2 para executar qualquer query — mesmo que a mesma chamada seja feita novamente após 20 minutos. Isso garante que a conexão com o banco de dados permaneça ativa.

Na aba Advanced Settings, é possível configurar a Connection Test Query. Essa consulta é executada antes da especificada no parâmetro SQL Statement, garantindo que a conexão com o banco de dados esteja ativa e prevenindo erros.

Se o teste de conexão falhar, uma nova conexão será aberta automaticamente. Isso ajuda a evitar problemas como conexões "travadas" e timeouts causados por falhas anteriores.

Essa opção deve ser considerada apenas para bancos de dados antigos que utilizam versões do JDBC anteriores à 4.0.

Para isso, conecte o DB V2 ao trigger e configure da seguinte forma:

Aba General:

  • Account Type: Selecione o tipo de conta configurado.

  • Account: Escolha a conta usada para autenticar no banco de dados.

Aba Operation:

  • Type: Selecione QUERY.

  • Database URL: Informe a URL do seu banco de dados, como por exemplo jdbc:mysql://myserver/mydb.

  • SQL Statement: Informe a instrução SQL, por exemplo INSERT INTO CLIENTES (name, email) VALUES ('My Name', 'myname@email.com').

Aba Advanced Settings:

  • Connection Test Query: Insira uma consulta para testar a conexão, como SELECT version().

Após a execução do pipeline, o resultado da consulta será exibido na coluna Saída do .

Mantendo a conexão ativa por 5 ou 30 minutos

Use o DB V2 para manter a conexão com o banco de dados aberta por 5 ou 30 minutos, dependendo das suas necessidades.

Configure o conector da seguinte forma:

Aba Advanced Settings:

  • Keep Connection: Habilite essa opção para estender o tempo padrão de conexão de 5 minutos para 30 minutos, garantindo uma sessão ativa mais longa com o banco de dados.

Interrompendo a execução do pipeline em caso de erro

Use o DB V2 para controlar a execução do pipeline, interrompendo-a quando ocorrer um erro durante uma operação no banco de dados.

Para controlar como os erros impactam a execução, configure o conector da seguinte forma:

Aba General:

  • Fail On Error: Habilite essa opção para parar o pipeline se ocorrer um erro ao invocar o DB V2. Se desabilitado, o pipeline continuará executando mesmo que a operação falhe.

Acessando e gravando arquivos no banco de dados

Use o DB V2 para ler ou gravar arquivos em campos BLOB ou CLOB no seu banco de dados. Isso permite que você:

  • Grave arquivos do pipeline em colunas BLOB ou CLOB no banco de dados.

  • Leia dados BLOB ou CLOB do banco de dados como arquivos dentro do pipeline.

Ao habilitar a opção Blob As File ou Clob As File, você pode especificar um caminho de arquivo para essas operações:

  • Ao usar INSERT, fornecer um caminho de arquivo do pipeline armazena o arquivo no banco de dados.

  • Ao usar SELECT, o conteúdo BLOB ou CLOB recuperado é convertido em um arquivo dentro do pipeline.

Passo 1: Ler o arquivo

Para ler o arquivo, conecte o DB V2 ao trigger e configure-o da seguinte forma:

Aba General:

  • Step Name: Nomeie como “Ler Arquivo” ou algo similar.

  • Account Type: Selecione o tipo de conta configurado.

  • Account: Escolha a conta usada para autenticar no banco de dados.

Aba Operation:

  • Type: Selecione QUERY.

  • Database URL: Informe a URL do seu banco de dados, como jdbc:mysql://myserver/mydb.

  • SQL Statement: Insira a instrução SQL, por exemplo SELECT blob FROM CLIENTES WHERE id=78.

  • Blob As File / Clob As File: Habilite uma ou ambas as opções. Se Clob As File for habilitado, o parâmetro Charset aparecerá para definir a codificação do arquivo.

{
  "data": [
    {
      "blob": "E4G17F.file",
      "clob": "H2K89G.file"
    }
  ],
  "updateCount": 0,
  "rowCount": 1
}

Dois arquivos, E4G17F.file e H2K89G.file, foram gerados e disponibilizados no pipeline.

Passo 2: Gravar o arquivo

Para gravar o arquivo, conecte outro DB V2 ao conector “Ler Arquivo” e configure-o da seguinte forma:

Aba General:

  • Step Name: Nomeie como “Gravar Arquivo” ou algo similar.

  • Account Type: Selecione o tipo de conta configurado.

  • Account: Escolha a conta usada para autenticar no banco de dados.

Aba Operation:

  • Type: Selecione QUERY.

  • Database URL: Insira a URL do seu banco de dados, como jdbc:mysql://myserver/mydb.

  • SQL Statement: Insira a instrução SQL, por exemplo INSERT INTO CLIENTES (blob, clob) VALUES ( {{ message.data.blob }}, {{ message.data.clob }} ).

  • Blob As File / Clob As File: Habilite uma ou ambas as opções. Se Clob As File for habilitado, o parâmetro Charset aparecerá para definir a codificação do arquivo.

  • Type Properties: Clique em Add e informe os seguintes dados:

    • Key: 0 (cada expressão com Double Braces tem um índice; 0 se refere à primeira)

    • Type: BLOB

    • Out Parameter Name: (deixe em branco)

    • Parameter Type: IN

{
"data": null,
"updateCount": 1,
"rowCount": 0
}

Entendendo a saída

O resultado indica que uma linha da tabela foi afetada. Primeiro, o conector Ler Arquivo recuperou o conteúdo BLOB e CLOB do banco de dados e gerou arquivos. Em seguida, o conector Gravar Arquivo usou esses arquivos do pipeline e os inseriu no banco de dados como um novo registro.

Executando uma procedure

Use o DB V2 para chamar e executar uma procedure armazenada no seu banco de dados e recuperar o resultado.

Exemplo

Neste exemplo, o banco de dados contém a seguinte procedure:

CREATE PROCEDURE `proc_sum_one` (INOUT `num` INTEGER)
BEGIN
    SET `num` = `num` + 1;
END;

Para executar esse procedimento no seu pipeline, conecte o DB V2 ao trigger e configure-o da seguinte forma:

Aba General:

  • Account Type: Selecione o tipo de conta configurado.

  • Account: Escolha a conta usada para autenticar no banco de dados.

Aba Operation:

  • Type: Selecione PROCEDURE.

  • Database URL: Informe a URL do seu banco de dados, como jdbc:mysql://myserver/mydb.

  • SQL Statement: Informe a instrução SQL, como call proc_sum_one({{ message.num }}).

  • Type Properties: Clique em Add e informe os seguintes dados:

    • Key: 0 (cada expressão com Double Braces tem um índice; 0 se refere à primeira)

    • Type: INTEGER

    • Out Parameter Name: result (define o nome do parâmetro de saída da procedure)

    • Parameter Type: INOUT

{ 
  "num": 3 
}

Após executar o pipeline, a saída será:

{
  "data": {
    "result": 4
  },
  "success": true
}
Definindo propriedades personalizadas de conexão

Use o DB V2 para definir propriedades personalizadas de conexão, personalizando como o conector interage com seu banco de dados.

Para isso, conecte o DB V2 ao trigger e configure-o da seguinte forma:

Aba General:

  • Account Type: Selecione o tipo de conta configurado.

  • Account: Escolha a conta usada para autenticar no banco de dados.

Aba Operation:

  • Type: Selecione QUERY.

  • Database URL: Informe a URL do seu banco de dados, como jdbc:mysql://myserver/mydb.

  • SQL Statement: Informe a instrução SQL, como SELECT * FROM CLIENTES.

  • Custom Connection Properties: Informe as propriedades personalizadas de conexão. Por exemplo: { "connectTimeout": 1 }

{
  "success": false,
  "message": "Could not establish connection to the database",
  "error": "java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=xxxxx)(port=XXX)(type=master) : null"
}

Neste caso, a propriedade de conexão connectTimeout foi definida como 1 (um segundo) para demonstrar que foi aplicada e resultou em um erro de conexão.

Lendo tipos de dados personalizados de um banco de dados Oracle

Use o DB V2 para ler tipos de dados personalizados de um banco de dados Oracle quando uma tabela configurada contém esse tipo de dado.

Exemplo:

Suponha que você tenha uma tabela criada com a seguinte estrutura:

CREATE TABLE project (
    name VARCHAR2(50),
    coordinator OWNER
);

E o tipo personalizado OWNER seja definido como:

CREATE TYPE OWNER AS OBJECT (
    name VARCHAR2(50),
    email VARCHAR2(30)
);

Ao executar a seguinte consulta:

SELECT * FROM projeto

O resultado será:

{
  "data": [
    {
      "name": "Example Project",
      "owner": [
        "Coordinator Name",
        "Coordinator Email"
      ]
    }
  ],
  "updateCount": 0,
  "rowCount": 1
}

Se o tipo personalizado incluir outros tipos personalizados em sua estrutura, os dados retornados serão aninhados, como mostrado no exemplo abaixo:

{
  "data": [
    {
      "name": "Example Project",
      "owner": [
        "Coordinator Name",
        "Coordinator Email",
        [
          "Campo de um segundo tipo personalizado",
          [
            "Campo de um terceiro tipo personalizado"
          ]
        ]
      ]
    }
  ],
  "updateCount": 0,
  "rowCount": 1
}

Tipos personalizados não expõem os nomes dos campos definidos em sua estrutura; apenas a ordem desses campos é preservada.

No exemplo acima, o primeiro elemento do array "owner" corresponde ao campo "name" e o segundo ao campo "email", conforme definido no tipo OWNER.

Ao trabalhar com tipos personalizados em consultas do tipo PROCEDURE, é necessário definir o Out Parameter Name com o mesmo nome do tipo personalizado. Neste caso, seria OWNER.

Enviando tipos de dados personalizados a partir de um banco de dados Oracle

Use o conector DB V2 para inserir tipos de dados personalizados (structs) em uma tabela de um banco de dados Oracle.

Exemplo

Os seguintes tipos personalizados e tabela são criados no banco de dados:

  • Tipos personalizados:

CREATE OR REPLACE TYPE CONTACT AS OBJECT (
  NAME VARCHAR2(50),
  PHONE VARCHAR2(15)
);

CREATE OR REPLACE TYPE PERSON AS OBJECT (
  ID NUMBER(10,0),
  NAME VARCHAR2(50),
  CONTACT_INFO CONTACT
);

CREATE OR REPLACE TYPE DEPARTMENT AS OBJECT (
  ID NUMBER(10,0),
  NAME VARCHAR2(50)
);
  • Tabela:

CREATE TABLE EMPLOYEE (
  PERSON PERSON, 		
  DEPT DEPARTMENT,
  SALARY NUMBER(12,2)
);

Para inserir dados na tabela EMPLOYEE, você pode usar as abordagens a seguir:

  • Exemplo de entrada:

{
	"personName": "John A.",
	"contactName": "John",
	"contactPhone": "99999",
	"departmentName": "IT"
}
  • Usando um comando INSERT a partir de uma consulta SELECT:

INSERT INTO EMPLOYEE
SELECT 
  PERSON(
    TRUNC(DBMS_RANDOM.VALUE(0,999999)), 
    {{ message.personName }}, 
    CONTACT({{ message.contactName }}, {{ message.contactPhone }})
  ),
  DEPARTMENT(
    TRUNC(DBMS_RANDOM.VALUE(0,999999)), 
    {{ UPPERCASE(message.departmentName) }}
  ),
  3030.67
FROM DUAL;
  • Usando uma PROCEDURE previamente criada:

Criação da procedure:
CREATE OR REPLACE PROCEDURE MY_PROC(DEPT IN DEPARTMENT, EMP IN OUT PERSON) IS
  SAL NUMBER(12,2);
BEGIN
  SAL := 4567.89 * 1.10;
  INSERT INTO EMPLOYEE VALUES (EMP, DEPT, SAL);	
EXCEPTION
  WHEN OTHERS THEN
    RAISE_APPLICATION_ERROR(-20001, 'An error was encountered - ' || SQLCODE || ' - ERROR: ' || SQLERRM);
END;
Chamada da procedure:
DECLARE
  CONT CONTACT;
  EMP PERSON;
  DEPT DEPARTMENT;
BEGIN
  DEPT := DEPARTMENT(
    TRUNC(DBMS_RANDOM.VALUE(0,999999)), 
    {{ UPPERCASE(message.departmentName) }}
  );

  CONT := CONTACT(
    {{ message.contactName }}, 
    {{ message.contactPhone }}
  );

  EMP := PERSON(
    TRUNC(DBMS_RANDOM.VALUE(0,999999)), 
    {{ message.personName }}, 
    CONT
  );

  MY_PROC(DEPT, EMP);
END;
  • Usando um script SQL completo:

DECLARE
  CONT CONTACT;
  EMP PERSON;
  DEPT DEPARTMENT;
  SAL EMPLOYEE.SALARY%TYPE;
BEGIN
  DEPT := DEPARTMENT(
    TRUNC(DBMS_RANDOM.VALUE(0,999999)), 
    {{ UPPERCASE(message.departmentName) }}
  );

  CONT := CONTACT(
    {{ message.contactName }}, 
    {{ message.contactPhone }}
  );

  EMP := PERSON(
    TRUNC(DBMS_RANDOM.VALUE(0,999999)), 
    {{ message.personName }}, 
    CONT
  );

  SAL := 4567.89;

  INSERT INTO EMPLOYEE VALUES (EMP, DEPT, SAL);	
EXCEPTION
  WHEN OTHERS THEN
    RAISE_APPLICATION_ERROR(-20001, 'An error was encountered - ' || SQLCODE || ' - ERROR: ' || SQLERRM);
END;
Usando instrução SQL bruta para lidar com consultas condicionais

Suponha que seu fluxo de integração precise executar duas consultas SQL diferentes, dependendo da lógica de negócio:

Consulta 1:

SELECT * FROM TABLE_1
WHERE ID = 123

Consulta 2:

SELECT * FROM TABLE_2
WHERE CODE = 'ABC'

Exemplo passo a passo

Passo 1: Configure o pipeline

Adicione um Template Transformer e um conector DB V2 ao seu pipeline.

Passo 2: Configure o conector Template Transformer

  • Preserve Original: Ative esta opção.

  • Body: Defina o seguinte corpo:

SELECT * FROM 
${table}
WHERE 
<#if id?? > 
    ID = {{ message._query.id }} 
</#if>

<#if code??>
    CODE = {{ message._query.code }} 
</#if>

Passo 3: Configure o conector DB V2

Aba General:

  • Account Type: Selecione o tipo de conta configurado.

  • Account: Escolha a conta usada para autenticar no banco de dados.

Aba Operation:

  • Type: Selecione QUERY.

  • Database URL: Informe a URL do seu banco de dados, como jdbc:mysql://myserver/mydb.

  • SQL Statement: Defina como: {{ message.query }}

Aba Advanced Settings:

  • Raw SQL Statement: Ative essa opção.

Passo 4: Teste a execução

Payload para a Consulta 1:

{
    "query": {
        "table": "TABLE_1",
        "id": 123
    }
}

Payload para a Consulta 2:

{
    "query": {
        "table": "TABLE_2",
        "code": "ABC"
    }
}

Os resultados esperados para cada consulta são:

Resultado para a Consulta 1:

{
    "data": [
        {
            "id": 123,
            "name": "John",
            "role": "Developer",
            ...
        }
    ],
    "updateCount": 0,
    "rowCount": 1
}

Resultado para a Consulta 2:

{
    "data": [
        {
            "code": "ABC",
            "fullName": "Paul Smith",
            "zipCode": "99999",
            ...
        }
    ],
    "updateCount": 0,
    "rowCount": 1
}

Entendendo a saída

O resultado da consulta é retornado como um JSON com três propriedades principais:

  • data: Um array de objetos representando cada linha retornada. Cada objeto contém as colunas selecionadas pela consulta.

    • Exemplo: Se sua consulta for SELECT name FROM TABLE_1 WHERE ID = 123, cada objeto no array data conterá apenas a propriedade name.

  • updateCount: Número de linhas afetadas pelo comando SQL. Para operações SELECT, este valor é sempre 0, já que nenhuma tabela é alterada.

  • rowCount: Número de linhas retornadas pela consulta.

  • Usa a tecnologia FreeMarker para validar os dados antes de executar a consulta.

  • Ajuda a evitar SQL Injection: a declaração com Double Braces não é resolvida pelo próprio Template Transformer, mas sim pelo DB V2, que configura e valida os parâmetros da consulta com antecedência usando Prepared Statements.

  • Fornece uma maneira mais segura e fácil de criar consultas no seu pipeline.

Após a , a saída será:

Este exemplo usa ({{ message.data.blob }}, {{ message.data.clob }}) para referenciar o resultado da consulta do conector anterior. Essas expressões recuperam os nomes dos arquivos gerados (E4G17F.file, H2K89G.file) e passam seus caminhos para o comando INSERT nos campos blob e clob.

Após a , a saída será:

Neste exemplo, usamos a expressão com Double Braces {{ message.num }} para acessar um valor do conector anterior. Para mais detalhes, .

Depois que o conector estiver configurado e salvo, abra o e insira um valor de entrada na coluna Payload, como:

Após , a saída será:

O conector DB V2 não oferece suporte às para resolver tipos personalizados (struct) ao usar comandos INSERT ou UPDATE.

O conector DB V2 oferece suporte ao recurso Raw SQL Statement, permitindo que você referencie dinamicamente uma consulta inteira usando . Isso significa que você pode definir a consulta completa em um conector anterior e passá-la como uma variável para o DB V2, adaptando-a em tempo de execução.

Para usar esse recurso, você deve configurar a consulta SQL em um conector como o e então referenciá-la no DB V2.

No , teste os seguintes payloads de entrada:

Embora outros conectores como ou também possam ser usados para definir a string de consulta, o Template Transformer oferece algumas vantagens importantes:

expressões Double Braces
consulte a documentação
Painel de Execução
expressões Double Braces
Double Braces
Template Transformer
Painel de execução
JSON Generator
Transformer (JOLT)
DB V2
Bancos de dados suportados
execução do pipeline
execução do pipeline
execução do pipeline
execução do pipeline
Painel de Execução
execução do pipeline
execução do pipeline
executar o pipeline