Consultar Dados particionados externos (com cláusula de particionamento)

Se você quiser consultar vários arquivos de dados no Armazenamento de Objetos como uma única tabela externa e representá-los como várias partições lógicas, é altamente recomendável usar uma tabela particionada externa. O uso de uma tabela particionada externa preserva o particionamento lógico dos seus arquivos de dados para acesso de consulta. Use o procedimento DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE para criar uma tabela particionada externa.

Há duas maneiras de criar uma tabela particionada externa no Autonomous Database:

  • A primeira versão é para. Consulte Query External Partitioned Data with Hive Format Source File Organization para obter informações sobre esse tipo de uso de tabela particionada externa.

  • A segunda versão é para. Ao criar uma tabela externa particionada dessa forma, você inclui uma cláusula de partição no parâmetro partitioning_clause. A cláusula de partição que você inclui depende dos arquivos de dados na Nuvem e do tipo de partição que você usa. Esta seção descreve esse tipo de uso de tabela particionada externa.

  1. Armazene suas credenciais de armazenamento de objetos usando o procedimento DBMS_CLOUD.CREATE_CREDENTIAL.

    Por exemplo:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL (
        credential_name => 'DEF_CRED_NAME',
        username => 'adb_user@example.com',
        password => 'password' );
    END;
    /
    

    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.

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

    Consulte Procedimento CREATE_CREDENTIAL para obter informações sobre os parâmetros username e password para diferentes serviços de armazenamento de objetos.

  2. Crie uma tabela externa particionada na parte superior dos arquivos de origem usando o procedimento DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE.

    O procedimento DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE suporta arquivos particionados externos nos serviços suportados de armazenamento de objetos na nuvem. A credencial é uma propriedade em nível de tabela; portanto, os arquivos externos devem estar no mesmo armazenamento de objetos.

    Por exemplo:

    BEGIN
      DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
          table_name =>'PET1',  
          credential_name =>'DEF_CRED_NAME',
          format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii'),  
          column_list => 'col1 number, col2 number, col3 number',
          partitioning_clause => 'partition by range (col1)
             (partition p1 values less than (1000) location
                 ( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file_11.txt''),
              partition p2 values less than (2000) location 
                 ( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file_21.txt''),
              partition p3 values less than (3000) location 
                 ( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file_31.txt'') )'
         );
    END;
    / 
    

    Os parâmetros são:

    • table_name: é o nome da tabela externa.

    • credential_name: é o nome da credencial criada na etapa anterior.

    • partitioning_clause: é a cláusula completa de particionamento, incluindo as informações de localização para partições individuais.

    • format: define as opções que você pode especificar para descrever o formato do arquivo de origem. format: define as opções que você pode especificar para descrever o formato do arquivo de origem.

      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.

    • column_list: é uma lista delimitada por vírgulas das definições de coluna nos arquivos de origem.

    Neste exemplo, namespace-string corresponde ao namespace do armazenamento de objetos do Oracle Cloud Infrastructure e bucketname corresponde ao nome do bucket. Consulte Noções Básicas de Namespaces do serviço Object Storage para obter mais informações.

    Agora você pode executar consultas na tabela particionada externa criada na etapa anterior. Seu Autonomous Database aproveita as informações de particionamento da sua tabela particionada externa, garantindo que a consulta só acesse os arquivos de dados relevantes no Armazenamento de Objetos. Por exemplo, a consulta a seguir só lê arquivos de dados da partição P1.

    SELECT * FROM pet1 WHERE col1 < 750;

    As tabelas particionadas externas criadas com DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE incluem duas colunas invisíveis file$path e file$name. Essas colunas ajudam a identificar de qual arquivo um registro está vindo. Consulte Colunas de Metadados de Tabela Externa para obter mais informações.

    Se houver linhas nos arquivos de origem que não correspondam às opções de formato especificadas, a consulta reportará um erro. Você pode usar os parâmetros DBMS_CLOUD, como rejectlimit, para suprimir esses erros. Como alternativa, você também pode validar a tabela particionada externa criada para ver as mensagens de erro e as linhas rejeitadas para que possa alterar suas opções de formato adequadamente. Consulte Validar Dados Externos e Validar Dados Partidos Externos para obter mais informações.

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

    Consulte DBMS_CLOUD Formatos de URI para obter mais informações sobre os serviços suportados de armazenamento de objetos da nuvem.