Carregar um arquivo JSON de documentos delimitados por linhas em uma coleção

Para carregar dados de coleções na Nuvem, primeiro armazene suas credenciais de armazenamento de objetos no seu Autonomous Database e, em seguida, use o procedimento DBMS_CLOUD.COPY_COLLECTION para carregar documentos em uma coleção.

Este exemplo carrega valores JSON de um arquivo delimitado por linha e usa o arquivo JSON myCollection.json. Cada valor e cada linha são carregados em uma coleção no banco de dados como documento único.

Veja aqui um exemplo desse tipo de arquivo. Ele tem três linhas, com um objeto por linha. Cada um desses objetos é carregado como um documento JSON separado.

{ "name" : "apple", "count": 20 }
{ "name" : "orange", "count": 42 }
{ "name" : "pear", "count": 10 }

Antes de carregar os dados de myCollection.json para o banco de dados, copie o arquivo para o armazenamento de objetos:

  • Crie um bucket no armazenamento de objetos. Por exemplo, crie um bucket do Oracle Cloud Infrastructure Object Storage no link do Oracle Cloud Infrastructure Object Storage e, em seguida, no compartimento selecionado, clique em Criar Bucket ou use um comando como este da CLI do OCI para criar um bucket:

    oci os bucket create --name fruit_bucket -c <compartment id>
  • Copie o arquivo JSON para o bucket do armazenamento de objetos. Por exemplo, use o seguinte comando da CLI do OCI para copiar o arquivo JSON para o fruit_bucket no Oracle Cloud Infrastructure Object Storage:

    
    oci os object put --bucket-name fruit_bucket \
                      --file "myCollection.json"

Carregue o arquivo JSON do armazenamento de objetos para uma coleção chamada fruit no banco de dados da seguinte forma:

  1. Armazene suas credenciais de armazenamento de objetos usando o procedimento DBMS_CLOUD.CREATE_CREDENTIAL, conforme mostrado no seguinte exemplo:
    SET DEFINE OFF
    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'adb_user@example.com',
        password => 'password'
      );
    END;
    /

    Esta operação armazena as credenciais no banco de dados em um formato criptografado. Você pode usar qualquer nome para o nome da credencial. Observe que essa etapa só é necessária uma vez, a menos que suas credenciais do armazenamento de objetos sejam alteradas. Depois de armazenar as credenciais, você poderá usar o mesmo nome de credencial para carregar todos os documentos.

    A criação de uma credencial para acessar o Oracle Cloud Infrastructure Object Store não será necessária se você ativar as credenciais do controlador de recursos. Para obter mais informações, consulte Usar o Controlador de Recursos para Acessar Recursos do Oracle Cloud Infrastructure.

    Consulte Procedimento CREATE_CREDENTIAL para obter informações detalhadas sobre os parâmetros.

    Observação

    Algumas ferramentas como SQL*Plus e SQL Developer usam o E comercial (&) como caractere especial. Se você tiver o caractere de E comercial em sua senha, use o comando SET DEFINE OFF nessas ferramentas, conforme mostrado no exemplo, para desativar o caractere especial e fazer com que a credencial seja criada corretamente.
  2. Carregue os dados em uma coleção usando o procedimento DBMS_CLOUD.COPY_COLLECTION.
    
    BEGIN  
     DBMS_CLOUD.COPY_COLLECTION(    
        collection_name => 'fruit',
        credential_name => 'DEF_CRED_NAME',
        file_uri_list   =>
          'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/fruit_bucket/o/myCollection.json',
        format          =>
          JSON_OBJECT('recorddelimiter' value '''\n''')  );
    END;
    /
    

    Os parâmetros são:

    • collection_name: é o nome da coleção de destinos.

    • credential_name: é o nome da credencial criada na etapa anterior. O parâmetro credential_name deve estar em conformidade com as convenções de nomenclatura do objeto Oracle. Consulte Regras de Nomenclatura do Objeto de Banco de Dados para obter mais informações.

    • file_uri_list: é uma lista delimitada por vírgulas dos arquivos de origem que você deseja carregar.

    • format: define as opções que você pode especificar para descrever o formato do arquivo de origem. As opções de formato characterset, compression, encryption, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, type, unpackarrays são suportadas ao carregar dados JSON. Qualquer outro formato especificado resultará em um erro.

      Se os dados em seus arquivos de origem forem criptografados, decriptografe os dados especificando o parâmetro format com a opção encryption. Consulte Descriptografar Dados ao Importar do Serviço Object Storage para obter mais informações sobre como decriptografar dados.

      Consulte DBMS_CLOUD Package Format Options para obter mais informações.

    Em que namespace-string é o namespace do armazenamento de objetos do Oracle Cloud Infrastructure e fruit_bucket é o nome do bucket. Para obter mais informações, consulte Noções Básicas de Namespaces de Armazenamento de Objetos e Visão Geral do Serviço Object Storage.

    Para obter informações detalhadas sobre os parâmetros, consulte Procedimento COPY_COLLECTION.

    A coleção fruit no seu banco de dados agora contém um documento para cada linha no arquivo myCollection.json.