Skyone
Skyone
Português
Português
  • Home
  • Dados
    • Introdução
      • Criação da conta
      • Recuperar senha
      • Guia rápido da plataforma
      • Como testar a plataforma gratuitamente
      • Espaço de trabalho
        • Criação de novo espaço
        • Encontrar um espaço
        • Enviar convite para um espaço
        • Editar um espaço
      • Organizações
        • Criando uma Organização
        • Visão Geral da Organização
        • Administração da Organização
        • Monitoramento da Organização
      • Configurações e Preferências
        • Perfil
        • Notificações
        • Uso e Pagamento
        • Usuários e permissões
    • Módulos
      • Gestão de módulos
        • Criação de Módulos
        • Importar Módulos
          • Arquivos IAC - Integration as Code
        • Edição de Módulos
        • Opções de Módulos
      • Configurações & Operações
        • Configurações de Módulos
          • Conectividade: Banco de Dados
          • Conectividade: Email
          • Conectividade: REST
          • Conectividade: SOAP
          • Conectividade: Arquivo
          • Conectividade: RFC
          • Gestão das contas conectadas
        • Operações de Módulos
          • Importar operações em módulos REST
          • Gestão das operações
        • Fluxos usando este Módulo
    • Monitoramento
    • Marketplace
    • API Gateway
    • Terminais & Agente
      • Agente
        • Versões suportadas pelo Agente
        • Como atualizar a versão do Agente
        • Como fazer backup dos arquivos do Agente
      • Terminais
    • Dados
      • Data Studio
        • Process Control
        • Data Stack Upload
        • File Actions
        • File Jobs
        • Data Job Parameters
        • Data Store
        • Data Share Features
        • ODBC
        • Como utilizar o Proxy para Data Engine
    • Integrações
      • Gestão das integrações
        • Criar integração
        • Importar integração
        • Editar integração
        • Opções da integração
        • Fluxos dessa integração
      • Fluxos
        • Gestão dos fluxos
          • Criar fluxo
          • Opções do fluxo
          • Flow Canva: configuração e edição do fluxo
            • Flow Canva: visão geral
            • Exception Handler
              • Configuração do Exception Handler
              • Cases do Exception Handler
            • Fluxos Multicontexto
              • Exemplo: Multicontexto com API Gateway
              • Exemplo: Multicontexto com Gatilho Temporal
            • Configuração do fluxo
        • Gatilhos
          • Gatilhos API Gateway: Adição e Configuração
          • Gatilhos AS2: Adição e Configuração
          • Gatilho de Fila: Adição e Configuração
          • Gatilhos de Fluxo: Adição e Configuração
          • Gatilhos Temporais: Adição e Configuração
          • Gatilhos Webhook: Adição e Configuração
        • Módulos Ferramentais
          • Módulo AS2
          • Módulo CSV
          • Módulo Chamada de Fluxo
          • Módulo Data Balancer
          • Módulo EDI
          • Módulo IF
          • Módulo JavaScript
          • Módulo Log
          • Módulo Loop Do While
          • Módulo Loop For
          • Módulo Retorno
          • Módulo Transformação de Dados
          • Módulo XML
          • Outros Módulos Ferramentais da plataforma
      • Cabeçalho dos módulos
      • Conectando componentes de um fluxo
      • Edição de gatilhos e módulos no fluxo
      • Operações de Dados
        • Manipulação de Objetos
          • Exemplo prático: Manipulação de variáveis
        • SMOP (Pequenas Operações)
        • Regras de Parametrização
    • How to
      • Inserir JSON em bancos de dados
      • Flattening: Transformação de dados utilizando JSONata
      • Como utilizar o Form Data
      • Entendendo a recursividade no JSONata
      • Consolidação de output de módulo REST
      • Como configurar um timeout de um componente?
      • Isolar na execução: conceito e aplicação em variáveis
      • Parâmetros de URL no API Gateway
      • Caso de uso: parâmetros de gatilho API Gateway
      • Caso de uso: Exception Handler em transações financeiras
      • Caso de uso: utilizando Grupos para gerenciar acessos aos fluxos
      • Como criar endpoint para download e integrar com o Power BI
      • É possível usar dois gatilhos em um único fluxo?
      • Como configurar o WhatsApp no Skyone Studio
    • FAQ
    • GIGS: O guia completo
    • Glossário
  • SUPORTE
    • Como solicitar suporte?
    • Níveis de gravidade de caso
    • SLAs
    • Ajuda e recursos
Powered by GitBook
On this page
  • Desafio
  • JSON Source
  • Postgres
  • MS SQL
  1. Dados
  2. How to

Inserir JSON em bancos de dados

Desafio

JSON é o principal formato de dados usado no Skyone Studio e geralmente você pode querer escrever vários registros de dados de uma matriz JSON em um banco de dados relacional.

Você pode sempre processar cada elemento da matriz individualmente e usar um INSERT regular para armazenar o registro no banco de dados. Entretanto, a maioria dos bancos de dados tem ferramentas para receber uma matriz JSON como argumento para uma função que mapeia os elementos da matriz para as colunas do banco de dados. Essas funções nos permitem passar grandes matrizes JSON para um único INSERT, economizando tempo e processamento a partir dos fluxos da plataforma.

JSON Source

Como exemplo, considere a array de trades extraídas da CoinAPI:

[
    {
        "symbol_id": "BITSTAMP_SPOT_BTC_USD",
        "time_exchange": "2023-01-23T00:16:24.1850000Z",
        "time_coinapi": "2023-01-23T00:16:24.2096192Z",
        "uuid": "f4b6a7d3-3a6b-4870-9073-383c62f68d6b",
        "price": 22688,
        "size": 0.0268,
        "taker_side": "BUY"
    },
    {
        "symbol_id": "BITSTAMP_SPOT_BTC_USD",
        "time_exchange": "2023-01-23T00:16:26.6100000Z",
        "time_coinapi": "2023-01-23T00:16:26.6324401Z",
        "uuid": "b473a149-e174-4c98-a7e6-561b0ad470be",
        "price": 22691,
        "size": 0.00419,
        "taker_side": "BUY"
    }
]

Normalmente queremos INSERT todo o array em uma única operação de banco de dados.

Postgres

Vamos supor que já temos o banco de dados de trades criado com os nomes de coluna idênticos aos nomes de propriedade da array de operações.

No campo de query da operação do banco de dados, você pode configurar:

INSERT INTO trades 
SELECT * FROM 
json_populate_recordset (NULL::trades, 
'<>trades</>'
);

Onde <>trades</> é um parâmetro que contém a array como especificado acima.

Oracle

Vamos supor que já temos o banco de dados de trades criado com os nomes de coluna idênticos aos nomes de propriedade da array de operações.

No campo de query da operação do banco de dados, você pode configurar:

DECLARE
my_array CLOB := '<>trades</>';
BEGIN
INSERT INTO trades (SYMBOL_ID, TIME_EXCHANGE, TIME_COINAPI, UUID, PRICE, "SIZE", TAKER_SIDE)
select * from json_table(my_array format json,'$[*]' 
columns(
    symbol_id varchar path '$[*].symbol_id',    
    time_exchange timestamp path '$[*].time_exchange',
    time_coinapi timestamp path '$[*].time_coinapi',
    uuid varchar path '$[*].uuid',
    price number path '$[*].price',
    "SIZE" number path '$[*].size',
    taker_side varchar path '$[*].taker_side'    
));
END;

Onde <>trades</> é um parâmetro que contém a array como especificado acima.

Observe que temos que usar a variável my_array para armazenar a array JSON original. Isto é necessário para lidar com arrays maiores que 4000 caracteres.

MS SQL

Vamos supor que já temos o banco de dados de trades criado com os nomes de coluna idênticos aos nomes de propriedade da array de operações.

No campo de query da operação do banco de dados, você pode configurar:

DECLARE @json NVARCHAR(max)  = N'<>trades</>' 
INSERT INTO trades
SELECT * FROM OPENJSON(@json)  
WITH   
(
    symbol_id VARCHAR(200) '$.symbol_id',    
    time_exchange DATETIME '$.time_exchange',
    time_coinapi DATETIME '$.time_coinapi',
    uuid VARCHAR(200) '$.uuid',
    price NUMERIC '$.price',
    size NUMERIC '$.size',
    taker_side varchar(200) '$.take_side' 
) 

Onde <>trades</> é um parâmetro que contém a array como especificado acima.

Se o seu JSON tiver strings com aspas simples como parte do texto, você pode precisar escapar delas duplicando as aspas simples. O MS SQL irá armazenar uma única aspas em seu lugar.

PreviousHow toNextFlattening: Transformação de dados utilizando JSONata

Last updated 2 months ago

Leia também:

How to Escape a Single Quote in SQL Server