Pular para o conteúdo

DBMS_CLOUD: Como Trabalhar com Dados no Oracle e Utilizar Armazenamento de Objetos

DBMS_CLOUD: Trabalhando com Dados no Oracle

Hoje eu vou explorar alguns aspectos do pacote DBMS_CLOUD, uma ferramenta poderosa para trabalhar com dados no Oracle Database em conjunto com o armazenamento de objetos. Neste artigo, discutirei a visão geral do DBMS_CLOUD e alguns pequenos exemplos práticos de uso.

Visão Geral do DBMS_CLOUD

O pacote DBMS_CLOUD oferece suporte abrangente para trabalhar com dados no armazenamento de objetos. Aqui estão alguns dos principais recursos:

  • Gerenciamento de Credenciais: O DBMS_CLOUD permite gerenciar suas credenciais para acessar o Object Store.
  • Cópia de Dados: Você pode carregar dados externos no banco de dados em uma única operação, sem a necessidade de criar objetos no banco de dados. A operação de carga é monitorada e rastreada dentro do banco de dados.
  • Validação de Conteúdo: Antes de consumir dados externos, você pode verificar seu conteúdo e identificar linhas que não estão no formato esperado.

Exemplos Práticos

Aqui estão alguns exemplos de uso do DBMS_CLOUD:

Copiando Dados de um Arquivo JSON

Suponhamos que você tenha um arquivo JSON chamado “channels.txt” armazenado no Object Storage. Você pode copiar os dados desse arquivo para uma tabela chamada “CHANNELS” no banco de dados usando o seguinte procedimento:

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Apr 1 07:37:39 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> -- Exemplo 1: Copiando Dados de um Arquivo JSON
SQL> BEGIN
  2      DBMS_CLOUD.COPY_DATA (
  3          table_name => 'CHANNELS',
  4          file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/p/unique-pre-authenticated-string/n/namespace-string/b/bucketname/o/channels.txt',
  5          format => json_object('delimiter' value ',')
  6      );
  7  END;
  8  /
  
PL/SQL procedure successfully completed.

SQL> -- Exibindo os dados copiados para a tabela CHANNELS
SQL> SELECT * FROM CHANNELS;

CHANNEL_ID  CHANNEL_NAME
----------  --------------------
1           News
2           Sports
3           Entertainment
4           Finance
5           Weather

SQL> EXIT

Neste exemplo, substitua a URL do arquivo pelo link correto do seu arquivo JSON no Object Storage. Certifique-se de que as credenciais de acesso ao Object Store estejam configuradas corretamente.

Listando Objetos no Armazenamento de Objetos

Para listar objetos em um diretório específico no Object Storage, você pode usar a função LIST_OBJECTS:

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Apr 1 07:37:39 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> -- Exemplo 2: Listando Objetos no Armazenamento de Objetos
SQL> DECLARE
  2      l_objects DBMS_CLOUD.OBJECT_LIST_T;
  3  BEGIN
  4      l_objects := DBMS_CLOUD.LIST_OBJECTS(
  5          credential_name => 'OBJ_STORE_CRED',
  6          prefix => 'myCollection'
  7      );
  8  
  9      FOR i IN 1..l_objects.COUNT LOOP
 10          DBMS_OUTPUT.PUT_LINE(l_objects(i).object_name);
 11      END LOOP;
 12  END;
 13  /
  
Object1.txt
Object2.csv
Object3.json
...

PL/SQL procedure successfully completed.

SQL> EXIT

Neste exemplo, substitua 'OBJ_STORE_CRED' pelo nome correto da credencial que você configurou para acessar o Object Store. O parâmetro prefix define o diretório no qual você deseja listar os objetos.

Carregando Dados de um Arquivo CSV

Suponhamos que você tenha um arquivo CSV chamado “sales_data.csv” no Object Storage. Para carregar esses dados em uma tabela chamada “SALES”, siga este procedimento:

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Apr 1 07:37:39 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> -- Exemplo 3: Carregando Dados de um Arquivo CSV
SQL> BEGIN
  2      DBMS_CLOUD.COPY_DATA (
  3          table_name => 'SALES',
  4          file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/p/unique-pre-authenticated-string/n/namespace-string/b/bucketname/o/sales_data.csv',
  5          format => json_object('type' value 'CSV', 'skipheaders' value 1)
  6      );
  7  END;
  8  /
  
PL/SQL procedure successfully completed.

SQL> -- Exibindo os dados copiados para a tabela SALES
SQL> SELECT * FROM SALES;

SALES_ID  PRODUCT_NAME    QUANTITY_SOLD
--------  --------------  -------------
1         Widget A        100
2         Widget B        200
3         Widget C        150
4         Widget D        50
5         Widget E        300

SQL> EXIT

Aqui, ajuste a URL do arquivo para corresponder ao seu arquivo CSV e verifique se as credenciais estão configuradas corretamente.

Validando Dados Externos

Antes de consumir dados externos, é importante validar seu conteúdo. Suponhamos que você tenha um arquivo CSV chamado “customer_data.csv”. Você pode usar o seguinte procedimento para validar o conteúdo:

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Apr 1 07:37:39 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> -- Exemplo 4: Validando Dados Externos
SQL> DECLARE
  2      l_validation_result DBMS_CLOUD.VALIDATE_CONTENT_RESULT_T;
  3  BEGIN
  4      l_validation_result := DBMS_CLOUD.VALIDATE_CONTENT(
  5          credential_name => 'OBJ_STORE_CRED',
  6          file_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/p/unique-pre-authenticated-string/n/namespace-string/b/bucketname/o/customer_data.csv',
  7          format => json_object('type' value 'CSV', 'skipheaders' value 1)
  8      );
  9  
 10      IF l_validation_result.is_valid THEN
 11          DBMS_OUTPUT.PUT_LINE('O conteúdo do arquivo é válido.');
 12      ELSE
 13          DBMS_OUTPUT.PUT_LINE('O conteúdo do arquivo não está no formato esperado. Erros encontrados:');
 14          FOR i IN 1..l_validation_result.error_count LOOP
 15              DBMS_OUTPUT.PUT_LINE(l_validation_result.errors(i).error_message);
 16          END LOOP;
 17      END IF;
 18  END;
 19  /
  
O conteúdo do arquivo é válido.

PL/SQL procedure successfully completed.

SQL> EXIT

Neste exemplo, substitua a URL do arquivo pelo link correto do seu arquivo CSV no Object Storage. O parâmetro format especifica o tipo de arquivo (neste caso, CSV) e o número de linhas de cabeçalho a serem ignoradas (1, no exemplo acima).

Certifique-se de que as credenciais de acesso ao Object Store estejam configuradas corretamente. A validação de conteúdo ajuda a garantir que os dados externos estejam prontos para uso no banco de dados Oracle.

Conclusão

O DBMS_CLOUD é uma ferramenta valiosa para integrar dados externos ao Oracle Database. Ele simplifica o processo de carregamento e validação de dados, permitindo que você aproveite o armazenamento de objetos de maneira eficiente.

É claro que esse pacote é muito mais abrangente do que esses exemplos que citei, por isso indico que leia o material descrito nas referências para um completo entendimento dessa DBMS.

Abs

Referências

Giovano Silva

Giovano Silva

Giovano Silva é um profissional com mais de 10 anos de experiência em tecnologias Oracle, com ênfase em PL/SQL. Ele adora escrever sobre soluções para problemas comuns enfrentados por profissionais Oracle em seu dia a dia. Seu objetivo é compartilhar conhecimento, simplificar conceitos complexos e ajudar a comunidade Oracle a crescer coletivamente.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress