Digibee Documentation
Solicitar documentaçãoAgendar demo
Português
Português
  • Primeiros passos
  • Destaques
    • Release notes
      • Release notes 2025
        • Junho
        • 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 de pipeline para sistemas externos de monitoramento
        • 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
      • JOLT e Double Braces na Digibee: Escolhendo o método certo para transformar dados
      • 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
      • Modelo ETL de alta escalabilidade para Digibee
    • Digibee Academy
      • Integration Developer Bootcamp
  • Guias de referência
    • Conectores
      • AI Tools
        • LLM Connector
      • 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 V2
        • 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
        • Previous Steps Access
      • 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
        • Casos de Teste
        • 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
        • Implantação (deploy) de 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)
      • 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 dados
        • Como usar a Transmissão de dados 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
      • Hospedagem da Plataforma
    • 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)
    • 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á 1 mês

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:

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
expressões Double Braces
execução do pipeline
consulte a documentação
Painel de Execução
executar o pipeline
expressões Double Braces
Double Braces
Template Transformer
Painel de execução
JSON Generator
Transformer (JOLT)