DBMS_CLOUD para Objetos e Arquivos

Esta seção aborda os subprogramas DBMS_CLOUD usados para trabalhar com objetos e arquivos.

Pré-requisitos

Como desenvolvedor, você pode usar procedimentos DBMS_CLOUD com Autonomous Databases implantados no Oracle Public Cloud, Multicloud ou Exadata Cloud@Customer.

Dependendo da opção de implantação, os pré-requisitos a seguir devem ser atendidos para usar os procedimentos DBMS_CLOUD com provedores de serviços Amazon S3, Azure Blob Storage e Google Cloud Storage.

Uma conectividade de saída deve ter sido configurada usando um gateway NAT pelo administrador da frota, conforme descrito abaixo:
  • Crie um gateway NAT na Rede Virtual na Nuvem (VCN) em que seus recursos do Autonomous Database residem seguindo as instruções em Criar um Gateway NAT na Documentação do Oracle Cloud Infrastructure.
  • Após criar o gateway NAT, adicione uma regra de roteamento e uma regra de segurança de saída a cada sub-rede (na VCN) na qual os recursos do Autonomous Database residem para que esses recursos possam usar o gateway para obter uma chave pública da sua instância do Azure AD:
    1. Vá para a página Detalhes da Sub-rede da sub-rede.
    2. Na guia Informações da Sub-rede, clique no nome da Tabela de Rota da sub-rede para exibir sua respectiva página Detalhes da Tabela de Rota.
    3. Na tabela de Regras de Roteamento existentes, verifique se já existe uma regra com as seguintes características:
      • Destino: 0.0.0.0/0
      • Tipo de Destino: Gateway NAT
      • Alvo: O nome do gateway NAT recém-criado na VCN

      Se essa regra não existir, clique em Adicionar Regras de Rota e adicione uma regra de roteamento com essas características.

    4. Retorne à página Detalhes da Sub-rede da sub-rede.
    5. Na tabela Listas de Segurança da sub-rede, clique no nome da lista de segurança da sub-rede para exibir a página Detalhes da Lista de Segurança.
    6. No menu lateral, em Recursos, clique em Regras de Saída.
    7. Na tabela de Regras de Saída existentes, verifique se já existe uma regra com as seguintes características:
      • Tipo de Destino: CIDR
      • Destino: 0.0.0.0/0
      • Protocolo IP: TCP
      • Faixa de Portas de Origem: 443
      • Faixa de Portas de Destino: Todas

      Se essa regra não existir, clique em Adicionar Regras de Saída e adicione uma regra de saída com essas características.

As definições de Proxy HTTP em seu ambiente devem permitir que o banco de dados acesse o provedor de serviços em nuvem.

Essas definições são definidas pelo administrador da frota ao criar a infraestrutura do Exadata Cloud@Customer, conforme descrito em Usando a Console para Provisionar o Exadata Database Service on Cloud@Customer.

Observação:

A configuração de rede, incluindo o Proxy HTTP, só poderá ser editada até que o Exadata Infrastructure esteja no estado Exige Ativação. Depois de ativado, você não poderá editar essas configurações.

A configuração de um Proxy HTTP para uma Infraestrutura do Exadata já provisionada precisa de uma Solicitação de Serviço (SR) no My Oracle Support. Consulte Criar uma Solicitação de Serviço no My Oracle Support para obter detalhes.

DBMS_CLOUD Subprogramas para Objetos e Arquivos

Os subprogramas para gerenciamento de objetos e arquivos no pacote DBMS_CLOUD.

Subprograma Descrição

Procedimento COPY_COLLECTION

Este procedimento carrega dados na coleção SODA existente do Cloud Object Storage ou de arquivos em um diretório.

Procedimento COPY_DATA

Este procedimento carrega dados em tabelas existentes do Autonomous Database do Cloud Object Storage ou de arquivos em um diretório.

COPY_DATA Procedimento para Arquivos Avro, ORC ou Parquet

Esse procedimento com o parâmetro format type definido com o valor orc, parquet ou avro carrega dados para tabelas existentes do Autonomous Database de arquivos ORC, Parquet ou Avro na Nuvem ou de arquivos ORC, Parquet ou Avro em um diretório.

Semelhante a arquivos de texto, os dados são copiados do arquivo ORC, Parquet ou Avro de origem para a tabela interna preexistente.

Procedimento COPY_OBJECT

Este procedimento copia arquivos de um bucket do Cloud Object Storage para outro.

Procedimento CREATE_EXTERNAL_TABLE

Este procedimento cria uma tabela externa em arquivos na Nuvem ou em arquivos em um diretório. Isso permite que você execute consultas em dados externos no Autonomous Database.

CREATE_EXTERNAL_TABLE Procedimento para Arquivos Avro, ORC ou Parquet

Esse procedimento com o parâmetro format type definido com o valor parquet, orc ou avro cria uma tabela externa com arquivos de formato Parquet, ORC ou Avro na Nuvem ou em um diretório.

Isso permite que você execute consultas em dados externos no Autonomous Database.

Procedimento CREATE_EXTERNAL_TEXT_INDEX

Este procedimento cria um índice de texto nos arquivos de armazenamento de objetos.

Procedimento CREATE_HYBRID_PART_TABLE

Esse procedimento cria uma tabela particionada híbrida. Isso permite que você execute consultas em dados particionados híbridos no Autonomous Database.

Procedimento DELETE_ALL_OPERATIONS

Este procedimento limpa todas as operações de carregamento de dados registradas na tabela user_load_operations do seu esquema ou limpa todas as operações de carregamento de dados do tipo especificado, conforme indicado com o parâmetro type.

Procedimento DELETE_FILE

Este procedimento remove o arquivo especificado do diretório indicado no Autonomous Database

Procedimento DELETE_OBJECT

Este procedimento exclui o objeto especificado no armazenamento de objetos.

Procedimento DELETE_OPERATION

Este procedimento aceita um operation_id como entrada e exclui os logs associados ao operation_id especificado.

Procedimento DROP_EXTERNAL_TEXT_INDEX

Este procedimento elimina o índice de texto nos arquivos de armazenamento de objetos.

Procedimento EXPORT_DATA

Esse procedimento exporta dados do Autonomous Database para arquivos na Nuvem com base no resultado de uma consulta. O formulário sobrecarregado permite que você use o parâmetro operation_id. Dependendo da opção type do parâmetro format especificada, o procedimento exporta linhas para o armazenamento de Objetos na Nuvem como texto com opções de CSV, JSON, Parquet ou XML

Procedimento e Função GET_OBJECT

Este procedimento é sobrecarregado. O form de procedimento lê um objeto do Cloud Object Storage e o copia para o Autonomous Database. O form de função lê um objeto do Cloud Object Storage e retorna um BLOB para o Autonomous Database.

Função LIST_FILES

Esta função lista os arquivos no diretório especificado. Os resultados incluem os nomes de arquivos e metadados adicionais sobre os arquivos, como tamanho do arquivo em bytes, timestamp de criação e o último timestamp de modificação.

Função LIST_OBJECTS

Esta função lista objetos no local especificado no armazenamento de objetos. Os resultados incluem os nomes de objetos e metadados adicionais sobre os objetos, como tamanho, soma de verificação, timestamp de criação e o último timestamp de modificação.

Procedimento MOVE_OBJECT

Esse procedimento move um objeto de um bucket do Cloud Object Storage para outro.

Procedimento PUT_OBJECT

Este procedimento é sobrecarregado. De uma forma, o procedimento copia um arquivo do Autonomous Database para o Cloud Object Storage. De outra, o procedimento copia um BLOB do Autonomous Database para o Cloud Object Storage.

Procedimento SYNC_EXTERNAL_PART_TABLE

Esse procedimento simplifica a atualização de uma tabela particionada externa de arquivos na Nuvem. Execute esse procedimento sempre que novas partições forem adicionadas ou quando as partições forem removidas da origem de Armazenamento de Objetos da tabela particionada externa.

Procedimento VALIDATE_EXTERNAL_TABLE

Este procedimento valida os arquivos de origem de uma tabela externa, gera informações de log e armazena as linhas que não correspondem às opções de formato especificadas para a tabela externa em uma tabela de arquivos incorretos no Autonomous Database.

Procedimento VALIDATE_EXTERNAL_PART_TABLE

Esse procedimento valida os arquivos de origem de uma tabela particionada externa, gera informações de log e armazena as linhas que não correspondem às opções de formato especificadas para a tabela externa em uma tabela de arquivos inválidos do Autonomous Database.

Procedimento VALIDATE_HYBRID_PART_TABLE

Esse procedimento valida os arquivos de origem de uma tabela particionada híbrida, gera informações de log e armazena as linhas que não correspondem às opções de formato especificadas para a tabela híbrida em uma tabela de arquivos inválidos do Autonomous Database.

Procedimento COPY_COLLECTION

Este procedimento carrega dados em uma coleção SODA do Cloud Object Storage ou de um diretório. Se a coleção SODA especificada não existir, o procedimento a criará. O formulário sobrecarregado permite que você use o parâmetro operation_id.

Sintaxe

DBMS_CLOUD.COPY_COLLECTION (
    collection_name   IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    format            IN CLOB     DEFAULT NULL
);

DBMS_CLOUD.COPY_COLLECTION (
    collection_name   IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    format            IN CLOB     DEFAULT NULL,
    operation_id      OUT NOCOPY NUMBER
);

Parâmetros

Parâmetro Descrição

collection_name

O nome da coleção SODA na qual os dados serão carregados. Se já existir uma coleção com esse nome, os dados especificados serão carregados; caso contrário, uma nova coleção será criada.

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Este parâmetro não é usado quando você especifica um diretório com file_uri_list.

file_uri_list

Esse parâmetro especifica uma lista delimitada por vírgulas dos URIs de arquivo de origem ou um ou mais diretórios e arquivos de origem.

URIs do arquivo de origem na nuvem

Você pode usar curingas, bem como expressões regulares nos nomes de arquivo nos URIs de arquivo de origem da Nuvem.

As expressões regulares só podem ser usadas quando o parâmetro regexuri format está definido como TRUE.

Os caracteres "*" e "?" são considerados caracteres curinga quando o parâmetro regexuri é definido como FALSE. Quando o parâmetro regexuri é definido como TRUE, os caracteres "*" e "?" fazem parte do padrão de expressão regular especificado.

Padrões de expressão regular só são suportados para o nome do arquivo ou caminho da subpasta em seus URIs e a correspondência de padrões é idêntica à executada pela função REGEXP_LIKE.

Por exemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

O formato dos URIs depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte Formatos de URI do Cloud Object Storage.

Consulte REGEXP_LIKE Condition em Oracle Database 19c SQL Language Reference ou Oracle Database 23ai SQL Language Reference para obter mais informações sobre a condição REGEXP_LIKE.

Diretório

Você pode especificar um diretório e um ou mais nomes de arquivos ou usar uma lista separada por vírgulas de diretórios e nomes de arquivos. O formato para especificar um diretório é:'MY_DIR:filename.ext'. Por padrão, o nome do diretório MY_DIR é um objeto de banco de dados e não faz distinção entre maiúsculas e minúsculas. O nome do arquivo faz distinção entre maiúsculas e minúsculas.

Você pode usar curingas para especificar nomes de arquivo em um diretório. O caractere "*" pode ser usado como curinga para vários caracteres, o caractere "?" pode ser usado como curinga para um único caractere. Por exemplo:'MY_DIR:*" ou 'MY_DIR:test?'

Para especificar vários diretórios, use uma lista de diretórios separada por vírgulas: Por exemplo:'MY_DIR1:*, MY_DIR2:test?'

Use aspas duplas para especificar um nome de diretório que faça distinção entre maiúsculas e minúsculas. Por exemplo:'"my_dir1":*, "my_dir2":Test?'

Para incluir um caractere de aspas, use duas aspas. Por exemplo:'MY_DIR:''filename.ext'. Isso especifica que filename começa com uma aspa (').

format

As opções que descrevem o formato dos arquivos de origem. Essas opções são especificadas como uma string JSON.

Os formatos compatíveis são: characterset, compression, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, unpackarray, keyassignment e keypath.

Além dos formatos mencionados para dados JSON, o Autonomous Database também oferece suporte a outros formatos. Para obter a lista de argumentos de formato suportados pelo Autonomous Database, consulte Parâmetro de Formato.

operation_id

Use esse parâmetro para rastrear o andamento e o status final da operação de carga como o ID correspondente na view USER_LOAD_OPERATIONS.

Exemplo

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'OBJ_STORE_CRED',
            username        => 'user_name@oracle.com',
            password        => 'password'
            );

    DBMS_CLOUD.COPY_COLLECTION(
            collection_name => 'myCollection',
            credential_name => 'OBJ_STORE_CRED',
            file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/adbexample/b/json/o/myCollection.json'  
            );
END;
/

Procedimento COPY_DATA

Este procedimento carrega dados em tabelas existentes do Autonomous Database de arquivos na Nuvem ou de arquivos em um diretório. O formulário sobrecarregado permite que você use o parâmetro operation_id.

Sintaxe

DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    schema_name       IN VARCHAR2,
    field_list        IN CLOB,
    format            IN CLOB);

DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB DEFAULT NULL,
    schema_name       IN VARCHAR2 DEFAULT NULL,
    field_list        IN CLOB DEFAULT NULL,
    format            IN CLOB DEFAULT NULL
    operation_id      OUT NOCOPY NUMBER);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela de destino no banco de dados. A tabela de destino precisa ser criada antes de você executar COPY_DATA.

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Este parâmetro não é usado quando você especifica um diretório com file_uri_list.

file_uri_list

Você pode usar curingas, bem como expressões regulares nos nomes de arquivo nos URIs de arquivo de origem da Nuvem.

URIs do arquivo de origem na nuvem

Esse parâmetro especifica uma lista delimitada por vírgulas dos URIs de arquivo de origem ou um ou mais diretórios e arquivos de origem.

As expressões regulares só podem ser usadas quando o parâmetro regexuri format está definido como TRUE.

Os caracteres "*" e "?" são considerados caracteres curinga quando o parâmetro regexuri é definido como FALSE. Quando o parâmetro regexuri é definido como TRUE, os caracteres "*" e "?" fazem parte do padrão de expressão regular especificado.

Padrões de expressão regular só são suportados para o nome do arquivo ou caminho da subpasta em seus URIs e a correspondência de padrões é idêntica à executada pela função REGEXP_LIKE.

Por exemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

O formato dos URIs depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte Formatos de URI do Cloud Object Storage.

Consulte REGEXP_LIKE Condition em Oracle Database 19c SQL Language Reference ou Oracle Database 23ai SQL Language Reference para obter mais informações sobre a condição REGEXP_LIKE.

Diretório

Você pode especificar um diretório e um ou mais nomes de arquivos ou usar uma lista separada por vírgulas de diretórios e nomes de arquivos. O formato para especificar um diretório é:'MY_DIR:filename.ext'. Por padrão, o nome do diretório MY_DIR é um objeto de banco de dados e não faz distinção entre maiúsculas e minúsculas. O nome do arquivo faz distinção entre maiúsculas e minúsculas.

Você pode usar curingas para especificar nomes de arquivo em um diretório. O caractere "*" pode ser usado como curinga para vários caracteres, o caractere "?" pode ser usado como curinga para um único caractere. Por exemplo:'MY_DIR:*" ou 'MY_DIR:test?'

Para especificar vários diretórios, use uma lista de diretórios separada por vírgulas: Por exemplo:'MY_DIR1:*, MY_DIR2:test?'

Use aspas duplas para especificar um nome de diretório que faça distinção entre maiúsculas e minúsculas. Por exemplo:'"my_dir1":*, "my_dir2":Test?'

Para incluir um caractere de aspas, use duas aspas. Por exemplo:'MY_DIR:''filename.ext'. Isso especifica que filename começa com uma aspa (').

schema_name

O nome do esquema em que a tabela de destino reside. O valor padrão é NULL, o que significa que a tabela de destino está no mesmo esquema que o usuário que está executando o procedimento.

field_list

Identifica os campos nos arquivos de origem e seus tipos de dados. O valor padrão é NULL, o que significa que os campos e seus tipos de dados são determinados pelo parâmetro column_list. A sintaxe desse argumento é a mesma da cláusula field_list nas tabelas externas regulares do sistema Oracle. Para obter mais informações, consulte field_list em Oracle Database 19c Utilities ou Oracle Database 23ai Utilities.

Quando o valor da opção type do parâmetro format é json, esse parâmetro é ignorado.

Para obter um exemplo usando field_list, consulte Procedimento CREATE_EXTERNAL_TABLE.

format

As opções descrevendo o formato da origem, do log e dos arquivos inválidos. Para ver a lista de opções e saber como especificar os valores, consulte Parâmetro de Formato.

Para as opções de formato de arquivo Avro, ORC ou Parquet, consulte Opções de Formato do Pacote DBMS_CLOUD para Avro, ORC ou Parquet.

operation_id

Use esse parâmetro para rastrear o andamento e o status final da operação de carga como o ID correspondente na view USER_LOAD_OPERATIONS.

Observações de Uso

O limite de registro padrão é detected newline. Com detected newline, o DBMS_CLOUD tenta localizar automaticamente o caractere correto de nova linha a ser usado como delimitador de registro. O DBMS_CLOUD primeiro procura o caractere de nova linha do Windows \r\n. Se encontrar o caractere de nova linha do Windows, ele será usado como delimitador de registro para todos os arquivos do procedimento. Se um caractere de nova linha do Windows não for encontrado, o DBMS_CLOUD procurará o do UNIX/Linux \n e, caso encontre um, ele usará \n como delimitador para todos os arquivos do procedimento. Se os arquivos de origem usarem uma combinação de diferentes delimitadores de registro, você poderá encontrar um erro como, "KUP-04020: found record longer than buffer size supported". Nesse caso, modifique os arquivos de origem para usar o mesmo delimitador de registro ou só especifique arquivos de origem que utilizem o mesmo delimitador de registro.

Consulte Parâmetro de Formato para obter informações sobre a opção de formato recorddelmiter.

Exemplos

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'DEF_CRED_NAME',
            username        => 'user_name@oracle.com',
            password        => 'password'
            );
END;
/
BEGIN
 DBMS_CLOUD.COPY_DATA(
    table_name =>'CHANNELS',
    credential_name =>'DEF_CRED_NAME',
    file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/channels.txt',
    format => json_object('delimiter' value ',')
 );
END;
/
BEGIN
    DBMS_CLOUD.COPY_DATA(
            table_name      => 'ORDERS',
            schema_name     => 'TEST_SCHEMA',
            credential_name => 'DEF_CRED_NAME',
	     file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/adbexample/b/json/o/orde[r]s.tbl.1'
            format          =>  json_object('ignoreblanklines' value TRUE,
                                            'rejectlimit' value '0',
                                            'dateformat' value 'yyyy-mm-dd',
                                            'regexuri' value TRUE)
            );
END;
/

Procedimento COPY_DATA para arquivos Avro, ORC ou Parquet

Esse procedimento com o parâmetro format type definido com o valor avro, orc ou parquet carrega dados para tabelas existentes do Autonomous Database de arquivos Avro, ORC ou Parquet na Nuvem ou de arquivos em um diretório.

Semelhante a arquivos de texto, os dados são copiados do arquivo de origem Avro, ORC ou Parquet para a tabela interna preexistente.

Sintaxe

DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    schema_name       IN VARCHAR2 DEFAULT,
    field_list        IN CLOB DEFAULT,
    format            IN CLOB DEFAULT);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela de destino no banco de dados. A tabela de destino precisa ser criada antes de você executar COPY_DATA.

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Este parâmetro não é usado quando você especifica um diretório com file_uri_list.

file_uri_list

Esse parâmetro especifica uma lista delimitada por vírgulas dos URIs de arquivo de origem ou um ou mais diretórios e arquivos de origem.

URIs do arquivo de origem na nuvem

Você pode usar curingas, bem como expressões regulares nos nomes de arquivo nos URIs de arquivo de origem da Nuvem.

As expressões regulares só podem ser usadas quando o parâmetro regexuri format está definido como TRUE.

Os caracteres "*" e "?" são considerados caracteres curinga quando o parâmetro regexuri é definido como FALSE. Quando o parâmetro regexuri é definido como TRUE, os caracteres "*" e "?" fazem parte do padrão de expressão regular especificado.

Padrões de expressão regular só são suportados para o nome do arquivo ou caminho da subpasta em seus URIs e a correspondência de padrões é idêntica à executada pela função REGEXP_LIKE.

Por exemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

O formato dos URIs depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte Formatos de URI do Cloud Object Storage.

Consulte REGEXP_LIKE Condition em Oracle Database 19c SQL Language Reference ou Oracle Database 23ai SQL Language Reference para obter mais informações sobre a condição REGEXP_LIKE.

Diretório

Você pode especificar um diretório e um ou mais nomes de arquivos ou usar uma lista separada por vírgulas de diretórios e nomes de arquivos. O formato para especificar um diretório é:'MY_DIR:filename.ext'. Por padrão, o nome do diretório MY_DIR é um objeto de banco de dados e não faz distinção entre maiúsculas e minúsculas. O nome do arquivo faz distinção entre maiúsculas e minúsculas.

Você pode usar curingas para especificar nomes de arquivo em um diretório. O caractere "*" pode ser usado como curinga para vários caracteres, o caractere "?" pode ser usado como curinga para um único caractere. Por exemplo:'MY_DIR:*" ou 'MY_DIR:test?'

Para especificar vários diretórios, use uma lista de diretórios separada por vírgulas: Por exemplo:'MY_DIR1:*, MY_DIR2:test?'

Use aspas duplas para especificar um nome de diretório que faça distinção entre maiúsculas e minúsculas. Por exemplo:'"my_dir1":*, "my_dir2":Test?'

Para incluir um caractere de aspas, use duas aspas. Por exemplo:'MY_DIR:''filename.ext'. Isso especifica que filename começa com uma aspa (').

schema_name

O nome do esquema em que a tabela de destino reside. O valor padrão é NULL, o que significa que a tabela de destino está no mesmo esquema que o usuário que está executando o procedimento.

field_list

Ignorado para arquivos Avro, ORC ou Parquet.

Os campos na origem correspondem às colunas da tabela externa por nome. Os tipos de dados de origem são convertidos no tipo de dados de coluna de tabela externa.

Para arquivos ORC, consulte DBMS_CLOUD Mapeamento de Tipo de Dados ORC para Oracle.

Para arquivos Parquet, consulte Mapeamento de Tipo de Dados Parquet para Oracle do Pacote DBMS_CLOUD para obter detalhes sobre mapeamento.

Para arquivos Avro, consulte Mapeamento de Tipo de Dados Avro para Oracle do Pacote DBMS_CLOUD para obter detalhes sobre mapeamento.

format

As opções que descrevem o formato dos arquivos de origem. Para arquivos Avro, ORC ou Parquet, somente duas opções são suportadas: consulte Opções de Formato do Pacote DBMS_CLOUD para Avro, ORC ou Parquet.

Observações sobre Uso

  • Assim como em outros arquivos de dados, as cargas de dados Avro, ORC e Parquet geram logs que podem ser visualizados nas tabelas dba_load_operations e user_load_operations. Cada operação de carga adiciona um registro a dba[user]_load_operations que indica a tabela que contém os logs.

    A tabela de log fornece informações resumidas sobre a carga.

  • For Avro, ORC, or Parquet, when the format parameter type is set to the value avro, orc, or parquet, the BADFILE_TABLE table is always empty.

    • Para arquivos Parquet, erros de restrição PRIMARY KEY geram um erro ORA.

    • Se os dados de uma coluna encontrarem um erro de conversão, por exemplo, a coluna de destino não for grande o suficiente para conter o valor convertido, o valor da coluna será definido como NULL. Isso não gera um registro rejeitado.

Procedimento COPY_OBJECT

Este procedimento copia um objeto de um bucket ou pasta do Cloud Object Storage para outro.

O bucket ou pasta de origem e destino pode estar no mesmo provedor de armazenamento de Objetos na Nuvem ou em outro provedor.

Quando a origem e o destino estiverem em Armazenamentos de Objetos distintos ou tiverem contas diferentes com o mesmo provedor de nuvem, você poderá fornecer nomes de credenciais separados para os locais de origem e destino.

Por padrão, o nome da credencial de origem também é usado pelo local de destino quando o nome da credencial de destino não é fornecido.

Sintaxe

DBMS_CLOUD.COPY_OBJECT (
    source_credential_name  IN  VARCHAR2 DEFAULT NULL,
    source_object_uri       IN  VARCHAR2,
    target_object_uri       IN  VARCHAR2,
    target_credential_name  IN  VARCHAR2 DEFAULT NULL
);

Parâmetros

Parâmetro Descrição

source_credential_name

O nome da credencial para acessar o Cloud Object Storage de origem.

Se você não fornecer um valor source_credential_name, credential_name será definido como NULL.

source_object_uri

Especifica o URI, que aponta para o local do bucket ou da pasta do Object Storage de origem.

Esse parâmetro é obrigatório.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte Formatos de URI do Cloud Object Storage para obter mais informações.

target_object_uri

Especifica o URI do Armazenamento de Objetos de destino.

Esse parâmetro é obrigatório.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte Formatos de URI do Cloud Object Storage para obter mais informações.

target_credential_name

O nome da credencial para acessar o local de destino do Cloud Object Storage.

Se você não fornecer um valor target_credential_name, o target_object_uri será definido como o valor source_credential_name.

Exemplo

BEGIN 
DBMS_CLOUD.COPY_OBJECT (
    source_credential_name => 'OCI_CRED',
    source_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/bgfile.csv',
    target_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/myfile.csv'
);
END;
/

Procedimento CREATE_EXTERNAL_PART_TABLE

Esse procedimento cria uma tabela particionada externa em arquivos na Nuvem ou em arquivos em um diretório. Isso permite que você execute consultas em dados externos no Autonomous Database.

Sintaxe

DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    partitioning_clause  IN CLOB,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);


DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    file_uri_list        IN VARCHAR2,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela externa.

credential_name

O nome da credencial para acessar o Cloud Object Storage.

partitioning_clause

Especifica a cláusula de particionamento completo, incluindo as informações de localização para partições individuais.

Se você usar o parâmetro partitioning_clause, o parâmetro file_uri_list não será permitido.

file_uri_list

Esse parâmetro especifica uma lista delimitada por vírgulas dos URIs de arquivo de origem ou um ou mais diretórios e arquivos de origem.

URIs do arquivo de origem na nuvem

Você pode usar curingas, bem como expressões regulares nos nomes de arquivo nos URIs de arquivo de origem da Nuvem.

As expressões regulares só podem ser usadas quando o parâmetro regexuri format está definido como TRUE.

Os caracteres "*" e "?" são considerados caracteres curinga quando o parâmetro regexuri é definido como FALSE. Quando o parâmetro regexuri é definido como TRUE, os caracteres "*" e "?" fazem parte do padrão de expressão regular especificado.

Padrões de expressão regular só são suportados para o nome do arquivo ou caminho da subpasta em seus URIs e a correspondência de padrões é idêntica à executada pela função REGEXP_LIKE.

Essa opção só é suportada com tabelas externas criadas em um arquivo no Object Storage.

Por exemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

Se você usar o parâmetro file_uri_list, o parâmetro partitioning_clause não será permitido.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte Formatos de URI do Cloud Object Storage para obter mais informações.

Consulte REGEXP_LIKE Condition em Oracle Database 19c SQL Language Reference ou Oracle Database 23ai SQL Language Reference para obter mais informações sobre a condição REGEXP_LIKE.

column_list

Lista delimitada por vírgulas de nomes de colunas e tipos de dados para a tabela externa. Esse parâmetro tem os seguintes requisitos, dependendo do tipo dos arquivos de dados especificados com o parâmetro file_uri_list:

  • O parâmetro column_list é obrigatório com arquivos não estruturados. Usando arquivos não estruturados, por exemplo, com arquivos de texto CSV, o parâmetro column_list deve especificar todos os nomes de coluna e tipos de dados dentro do arquivo de dados, bem como as colunas de partição derivadas do nome do objeto.

  • O parâmetro column_list é opcional com arquivos estruturados. Por exemplo, com arquivos de dados Avro, ORC ou Parquet, o parâmetro column_list não é obrigatório. Quando column_list não for incluído, a opção partition_columns do parâmetro format deverá incluir especificações para nomes de colunas (name) e tipos de dados (type).

field_list

Identifica os campos nos arquivos de origem e seus tipos de dados. O valor padrão é NULL, o que significa que os campos e seus tipos de dados são determinados pelo parâmetro column_list. A sintaxe desse argumento é a mesma da cláusula field_list nas tabelas externas regulares do sistema Oracle. Para obter mais informações, consulte field_list em Oracle Database 19c Utilities ou Oracle Database 23ai Utilities.

format

A opção de formato partition_columns especifica os nomes de coluna DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE e os tipos de dados de colunas de partição quando as colunas de partição são derivadas do caminho do arquivo, dependendo do tipo de arquivo de dados, estruturado ou não estruturado:

  • Quando DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE inclui o parâmetro column_list e os arquivos de dados não são estruturados, como com arquivos de texto CSV, o parâmetro partition_columns não inclui o tipo de dados. Por exemplo, use um formato como o seguinte para esse tipo de especificação partition_columns:

    '"partition_columns":["state","zipcode"]'

    O tipo de dados não é obrigatório porque ele está especificado no parâmetro column_list DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE.

  • Quando o DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE não inclui o parâmetro column_list e os arquivos de dados são estruturados, como arquivos Avro, ORC ou Parquet, a opção partition_columns inclui o nome da coluna, a subcláusula name e o tipo de dados, a subcláusula type. Veja o seguinte exemplo que mostra uma especificação partition_columns:

    '"partition_columns":[
                   {"name":"country", "type":"varchar2(10)"},
                   {"name":"year", "type":"number"},
                   {"name":"month", "type":"varchar2(10)"}]'

Se os arquivos de dados não forem estruturados e a subcláusula type for especificada com partition_columns, a subcláusula type será ignorada.

Para nomes de objeto que não se baseiam no formato hive, a ordem das colunas especificadas de partition_columns deve corresponder à ordem em que aparecem no nome do objeto, no caminho de arquivo especificado no parâmetro file_uri_list.

Para ver todas as opções de parâmetro format que descrevem o formato dos arquivos de origem, consulte Formatos de URI do Cloud Object Storage.

Observações sobre Uso

  • Você não pode chamar esse procedimento com os parâmetros partitioning_clause e file_uri_list.

  • A especificação do parâmetro column_list é opcional com arquivos de dados estruturados, incluindo arquivos de dados Avro, Parquet ou ORC. Se column_list não for especificado, a opção partition_columns do parâmetro format deverá incluir name e type.

  • O parâmetro column_list é obrigatório com arquivos de dados não estruturados, como arquivos de texto CSV.

  • O procedimento DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE suporta arquivos particionados externos nos serviços de armazenamento de objetos na nuvem suportados, que incluem:
    • Oracle Cloud Infrastructure Object Storage

    • Armazenamento Blob do Azure

    Consulte Formatos de URI do Cloud Object Storage para obter mais informações.

  • O procedimento DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE suporta arquivos particionados externos em diretórios, seja em um sistema de arquivos local ou em um sistema de arquivos de rede.

  • Quando você chama DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE com o parâmetro file_uri_list, os tipos das colunas especificadas no nome do arquivo do Armazenamento de Objetos na Nuvem devem ser um destes:

    VARCHAR2(n)
    NUMBER(n)
    NUMBER(p,s)
    NUMBER
    DATE
    TIMESTAMP(9)
  • O limite de registro padrão é detected newline. Com detected newline, o DBMS_CLOUD tenta localizar automaticamente o caractere correto de nova linha a ser usado como delimitador de registro. O DBMS_CLOUD primeiro procura o caractere de nova linha do Windows \r\n. Se encontrar o caractere de nova linha do Windows, ele será usado como delimitador de registro para todos os arquivos do procedimento. Se um caractere de nova linha do Windows não for encontrado, o DBMS_CLOUD procurará o do UNIX/Linux \n e, caso encontre um, ele usará \n como delimitador para todos os arquivos do procedimento. Se os arquivos de origem usarem uma combinação de diferentes delimitadores de registro, você poderá encontrar um erro como, "KUP-04020: found record longer than buffer size supported". Nesse caso, modifique os arquivos de origem para usar o mesmo delimitador de registro ou só especifique arquivos de origem que utilizem o mesmo delimitador de registro.

    Consulte Formatos de URI do Cloud Object Storage para obter informações sobre a opção de formato recorddelmiter.

  • 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.

    • file$path: Especifica o texto do caminho do arquivo até o início do nome do objeto.

    • file$name: Especifica o nome do objeto, incluindo todo o texto que segue o nome do bucket.

Exemplos

Exemplo usando o parâmetro partitioning_clause:

BEGIN  
   DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
      table_name =>'PET1',  
      credential_name =>'OBJ_STORE_CRED',
      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
                                    ( ''&base_URL//file_11.txt'')
                                 ,
                                 partition p2 values less than (2000) location
                                    ( ''&base_URL/file_21.txt'')
                                 ,
                                 partition p3 values less than (3000) location 
                                    ( ''&base_URL/file_31.txt'')
                                 )'
     );
   END;
/  


BEGIN
    DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
       table_name          => 'PET',
       format              => json_object('delimiter'value ','),
       column_list         => 'name varchar2(20), gender varchar2(10), salary number',
       partitioning_clause => 'partition by range (salary)
              (   -- Use test1.csv in the DEFAULT DIRECTORY DATA_PUMP_DIR 
                  partition p1 values less than (100) LOCATION (''test1.csv''),
                   -- Use test2.csv in a specified directory MY_DIR
                  partition p2 values less than (300) DEFAULT DIRECTORY MY_DIR LOCATION (''test2.csv'')        )'   );                       
END;                     
/

Exemplo usando os parâmetros file_uri_list e column_list com arquivos de dados não estruturados:

BEGIN
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
   table_name => 'MYSALES',
   credential_name => 'DEF_CRED_NAME',
   file_uri_list     => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/*.csv', 
   column_list       => 'product varchar2(100), units number, country varchar2(100), year number, month varchar2(2)', 
   field_list        => 'product, units', --[Because country, year and month are not in the file, they are not listed in the field list]
   format            => '{"type":"csv", "partition_columns":["country","year","month"]}');
END;
/ 

Exemplo usando o file_uri_list sem o parâmetro column_list com arquivos de dados estruturados:

BEGIN
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
  table_name => 'MYSALES',
  credential_name => 'DEF_CRED_NAME',
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
    table_name      => 'MYSALES',
    credential_name => 'DEF_CRED_NAME',
    file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/*.parquet',
    format          => 
        json_object('type' value 'parquet', 'schema' value 'first',
                    'partition_columns' value 
                          json_array(
                                json_object('name' value 'country', 'type' value 'varchar2(100)'),
                                json_object('name' value 'year', 'type' value 'number'),
                                json_object('name' value 'month', 'type' value 'varchar2(2)')
                          )
         )
    );
END;
/

Procedimento CREATE_EXTERNAL_TABLE

Este procedimento cria uma tabela externa em arquivos na Nuvem ou em arquivos em um diretório. Isso permite que você execute consultas em dados externos no Autonomous Database.

Sintaxe

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2,
    file_uri_list    IN CLOB,
    column_list      IN CLOB,
    field_list       IN CLOB DEFAULT,
    format           IN CLOB DEFAULT);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela externa.

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Esse parâmetro não é usado quando você especifica um diretório ou um URL de Hiperlink de Tabela com file_uri_list.

file_uri_list

Esse parâmetro especifica uma lista delimitada por vírgulas dos URIs de arquivo de origem ou um ou mais diretórios e arquivos de origem.

URIs do arquivo de origem na nuvem

Você pode usar curingas, bem como expressões regulares nos nomes de arquivo nos URIs de arquivo de origem da Nuvem.

As expressões regulares só podem ser usadas quando o parâmetro regexuri format está definido como TRUE.

Os caracteres "*" e "?" são considerados caracteres curinga quando o parâmetro regexuri é definido como FALSE. Quando o parâmetro regexuri é definido como TRUE, os caracteres "*" e "?" fazem parte do padrão de expressão regular especificado.

Padrões de expressão regular só são suportados para o nome do arquivo ou caminho da subpasta em seus URIs e a correspondência de padrões é idêntica à executada pela função REGEXP_LIKE.

Essa opção só é suportada com tabelas externas criadas em um arquivo no Object Storage.

Por exemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

O formato dos URIs depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte Formatos de URI do Cloud Object Storage.

Consulte REGEXP_LIKE Condition em Oracle Database 19c SQL Language Reference ou Oracle Database 23ai SQL Language Reference para obter mais informações sobre a condição REGEXP_LIKE.

Diretório

Você pode especificar um diretório e um ou mais nomes de arquivos ou usar uma lista separada por vírgulas de diretórios e nomes de arquivos. O formato para especificar um diretório é:'MY_DIR:filename.ext'. Por padrão, o nome do diretório MY_DIR é um objeto de banco de dados e não faz distinção entre maiúsculas e minúsculas. O nome do arquivo faz distinção entre maiúsculas e minúsculas.

Você pode usar curingas para especificar nomes de arquivo em um diretório. O caractere "*" pode ser usado como curinga para vários caracteres, o caractere "?" pode ser usado como curinga para um único caractere. Por exemplo:'MY_DIR:*" ou 'MY_DIR:test?'

Para especificar vários diretórios, use uma lista de diretórios separada por vírgulas: Por exemplo:'MY_DIR1:*, MY_DIR2:test?'

Use aspas duplas para especificar um nome de diretório que faça distinção entre maiúsculas e minúsculas. Por exemplo:'"my_dir1":*, "my_dir2":Test?'

Para incluir um caractere de aspas, use duas aspas. Por exemplo:'MY_DIR:''filename.ext'. Isso especifica que filename começa com uma aspa (').

column_list

Lista delimitada por vírgulas de nomes de colunas e tipos de dados para a tabela externa.

field_list

Identifica os campos nos arquivos de origem e seus tipos de dados. O valor padrão é NULL, o que significa que os campos e seus tipos de dados são determinados pelo parâmetro column_list. A sintaxe desse argumento é a mesma da cláusula field_list nas tabelas externas regulares do Oracle Database. Para obter mais informações sobre field_list, consulte ORACLE_LOADER Access Driver field_list na Cláusula field_definitions em Oracle Database 19c Utilities ou Oracle Database 23ai Utilities.

format

As opções que descrevem o formato dos arquivos de origem. Para ver a lista de opções e saber como especificar os valores, consulte Parâmetro de Formato.

Para arquivos de formato Avro, ORC ou Parquet, consulte Procedimento CREATE_EXTERNAL_TABLE para Arquivos Avro, ORC ou Parquet.

Observações sobre Uso

  • O procedimento DBMS_CLOUD.CREATE_EXTERNAL_TABLE suporta arquivos particionados externos nos serviços suportados de armazenamento de objetos na nuvem, incluindo o Azure Blob Storage.

    A credencial é uma propriedade em nível de tabela; portanto, os arquivos externos devem estar no mesmo armazenamento de objetos.

    Consulte Formatos de URI do Cloud Object Storage para obter mais informações.

  • O limite de registro padrão é detected newline. Com detected newline, o DBMS_CLOUD tenta localizar automaticamente o caractere correto de nova linha a ser usado como delimitador de registro. O DBMS_CLOUD primeiro procura o caractere de nova linha do Windows \r\n. Se encontrar o caractere de nova linha do Windows, ele será usado como delimitador de registro para todos os arquivos do procedimento. Se um caractere de nova linha do Windows não for encontrado, o DBMS_CLOUD procurará o do UNIX/Linux \n e, caso encontre um, ele usará \n como delimitador para todos os arquivos do procedimento. Se os arquivos de origem usarem uma combinação de diferentes delimitadores de registro, você poderá encontrar um erro como, "KUP-04020: found record longer than buffer size supported". Nesse caso, modifique os arquivos de origem para usar o mesmo delimitador de registro ou só especifique arquivos de origem que utilizem o mesmo delimitador de registro.

    Consulte Parâmetro de Formato para obter informações sobre a opção de formato recorddelimiter.

Exemplo

BEGIN  
   DBMS_CLOUD.CREATE_EXTERNAL_TABLE(   
      table_name =>'WEATHER_REPORT_DOUBLE_DATE',   
      credential_name =>'OBJ_STORE_CRED',   
      file_uri_list =>'&base_URL/Charlotte_NC_Weather_History_Double_Dates.csv',
      format => json_object('type' value 'csv', 'skipheaders' value '1'),   
      field_list => 'REPORT_DATE DATE''mm/dd/yy'',                   
                     REPORT_DATE_COPY DATE ''yyyy-mm-dd'',
                     ACTUAL_MEAN_TEMP,                 
                     ACTUAL_MIN_TEMP,                 
                     ACTUAL_MAX_TEMP,                 
                     AVERAGE_MIN_TEMP,                    
                     AVERAGE_MAX_TEMP,     
                     AVERAGE_PRECIPITATION',   
      column_list => 'REPORT_DATE DATE,   
                     REPORT_DATE_COPY DATE,
                     ACTUAL_MEAN_TEMP NUMBER,  
                     ACTUAL_MIN_TEMP NUMBER,  
                     ACTUAL_MAX_TEMP NUMBER,  
                     AVERAGE_MIN_TEMP NUMBER,   
                     AVERAGE_MAX_TEMP NUMBER,                  
                     AVERAGE_PRECIPITATION NUMBER');
   END;
/ 

SELECT * FROM WEATHER_REPORT_DOUBLE_DATE where         
   actual_mean_temp > 69 and actual_mean_temp < 74

CREATE_EXTERNAL_TABLE Procedimento para Iceberg do Apache

Este procedimento cria tabelas externas para tabelas do Apache Iceberg nas configurações suportadas.

Essas configurações específicas são suportadas:

Sintaxe

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2 DEFAULT NULL,
    file_uri_list    IN CLOB,
    column_list      IN CLOB DEFAULT NULL,
    field_list       IN CLOB DEFAULT NULL,
    format           IN CLOB DEFAULT NULL
);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela externa.

credential_name

O nome da credencial usada para acessar os arquivos de dados, os arquivos de metadados e o Catálogo de Iceberg (se usado).

Para configurações do AWS e do OCI, a credencial deve ser criada conforme descrito no CREATE_CREDENTIAL Procedure.

As credenciais do AWS Amazon Resource Names (ARN) não são suportadas no momento.

file_uri_list

Deve ser NULO se um catálogo de Iceberg for especificado (consulte o parâmetro format abaixo). Se um catálogo de icebergs não for usado, o file_uri_list deverá conter o URI do arquivo de metadados do iceberg.

column_list

Deve ser NULL, pois os nomes e tipos de coluna são automaticamente derivados dos metadados Iceberg.

Os nomes das colunas correspondem aos nomes encontrados nos arquivos de dados subjacentes (Parquet, Avro, ORC). Os tipos de dados Oracle são derivados usando os mapeamentos Parquet/Avro/ORC entre Iceberg e os tipos de dados Parquet, Avro e ORC. Portanto, os usuários não podem especificar o column_list.

field_list

Deve ser NULO, pois os nomes das colunas e os tipos de dados são derivados automaticamente dos metadados do Iceberg.

format

O parâmetro format tem uma estrutura diferente dependendo do tipo de tabela Iceberg e quais informações são usadas para criar a tabela externa, por exemplo, informações de um catálogo de dados ou de um URI de metadados direto.

Consulte Suporte Iceberg em Amostras do OCI Data Flow e Formatos de URI DBMS_CLOUD para obter mais informações.

Exemplo de parâmetro de formato para tabelas do AWS Iceberg usando um Catálogo do AWS Glue

Um parâmetro format de amostra ao criar tabelas em uma tabela do AWS Iceberg usando um Catálogo de Colas da AWS é o seguinte:

format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg',
                   'protocol_config' value
                    json_object('iceberg_catalog_type' value 'aws_glue',
                                'iceberg_glue_region'  value 'glue region',
                                'iceberg_table_path'   value 'database_name.table_name'))); 
Em que, o parâmetro access_protocol contém um objeto JSON com dois elementos da seguinte forma:
  • protocol_type: Deve ser 'iceberg'
  • protocol_config: Um objeto JSON aninhado que especifica os detalhes do catálogo do iceberg.
    • iceberg_catalog_type: Deve ser 'aws_glue'
    • iceberg_glue_region: A região do catálogo, por exemplo, 'us-west-1'
    • iceberg_table_path: Um caminho glue database.glue table name.

Exemplo de parâmetro de formato da tabela do AWS Iceberg usando um URI de arquivo de metadados

Um parâmetro format de amostra ao criar tabelas em uma tabela do AWS Iceberg usando um URI de arquivo de metadados é o seguinte:
format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg')

Exemplo de parâmetro de formato para a tabela Iceberg do OCI usando o catálogo HadoopCatalog

Um parâmetro format de amostra ao criar tabelas por meio de uma tabela do OCI Iceberg criada pelo OCI Data Flow usando o catálogo HadoopCatalog é o seguinte:
format => json_object('access_protocol' value
       json_object('protocol_type'   value 'iceberg',
                   'protocol_config' value
                   json_object('iceberg_catalog_type'  value 'hadoop',
                               'iceberg_warehouse'     value '<OCI folder URI>',
                               'iceberg_table_path'    value 'database_name.table_name')));
Em que, o parâmetro access_protocol contém um objeto JSON com dois elementos da seguinte forma:
  • protocol_type: Deve ser 'iceberg'
  • protocol_config: Um objeto JSON aninhado que especifica os detalhes do catálogo do iceberg.
    • iceberg_catalog_type: Deve ser 'hadoop'
    • iceberg_warehouse: O caminho do diretório do warehouse usado ao gerar a tabela, no formato URI nativo.
    • iceberg_table_path: O caminho database_name.table name usado ao criar a tabela.

Exemplo de parâmetro de formato para a tabela Iceberg do OCI usando o URI do arquivo de metadados

Um parâmetro format de amostra ao criar tabelas por meio de uma tabela Iceberg do OCI usando o URI do arquivo de metadados é o seguinte:
format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg')
Onde o parâmetro access_protocol contém um objeto JSON com um elemento da seguinte forma:
  • protocol_type: Deve ser 'iceberg'

CREATE_EXTERNAL_TABLE Procedimento para Arquivos Avro, ORC ou Parquet

Esse procedimento com o parâmetro format type definido com o valor avro, orc ou parquet cria uma tabela externa com arquivos no formato Avro, ORC ou Parquet na Nuvem ou em um diretório.

Isso permite que você execute consultas em dados externos no Autonomous Database.

Sintaxe

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2 DEFAULT NULL,
    file_uri_list    IN CLOB,
    column_list      IN CLOB,
    field_list       IN CLOB DEFAULT,
    format           IN CLOB DEFAULT);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela externa.

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Este parâmetro não é usado quando você especifica um diretório com file_uri_list.

file_uri_list

Esse parâmetro especifica uma lista delimitada por vírgulas dos URIs de arquivo de origem ou um ou mais diretórios e arquivos de origem.

URIs do arquivo de origem na nuvem

Você pode usar curingas, bem como expressões regulares nos nomes de arquivo nos URIs de arquivo de origem da Nuvem.

As expressões regulares só podem ser usadas quando o parâmetro regexuri format está definido como TRUE.

Os caracteres "*" e "?" são considerados caracteres curinga quando o parâmetro regexuri é definido como FALSE. Quando o parâmetro regexuri é definido como TRUE, os caracteres "*" e "?" fazem parte do padrão de expressão regular especificado.

Padrões de expressão regular só são suportados para o nome do arquivo ou caminho da subpasta em seus URIs e a correspondência de padrões é idêntica à executada pela função REGEXP_LIKE.

Essa opção só é suportada com tabelas externas criadas em um arquivo no Object Storage.

Por exemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.parquet'

O formato dos URIs depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte Formatos de URI do Cloud Object Storage.

Consulte REGEXP_LIKE Condition em Oracle Database 19c SQL Language Reference ou Oracle Database 23ai SQL Language Reference para obter mais informações sobre a condição REGEXP_LIKE.

Diretório

Você pode especificar um diretório e um ou mais nomes de arquivos ou usar uma lista separada por vírgulas de diretórios e nomes de arquivos. O formato para especificar um diretório é:'MY_DIR:filename.ext'. Por padrão, o nome do diretório MY_DIR é um objeto de banco de dados e não faz distinção entre maiúsculas e minúsculas. O nome do arquivo faz distinção entre maiúsculas e minúsculas.

Você pode usar curingas para especificar nomes de arquivo em um diretório. O caractere "*" pode ser usado como curinga para vários caracteres, o caractere "?" pode ser usado como curinga para um único caractere. Por exemplo:'MY_DIR:*" ou 'MY_DIR:test?'

Para especificar vários diretórios, use uma lista de diretórios separada por vírgulas: Por exemplo:'MY_DIR1:*, MY_DIR2:test?'

Use aspas duplas para especificar um nome de diretório que faça distinção entre maiúsculas e minúsculas. Por exemplo:'"my_dir1":*, "my_dir2":Test?'

Para incluir um caractere de aspas, use duas aspas. Por exemplo:'MY_DIR:''filename.ext'. Isso especifica que filename começa com uma aspa (').

column_list

(Opcional) Esse campo, quando especificado, substitui o parâmetro format->schema que especifica que o esquema, as colunas e os tipos de dados são derivados automaticamente. Consulte o parâmetro de formato para obter detalhes.

Quando column_list for especificado para a origem Avro, ORC ou Parquet, os nomes de coluna deverão corresponder às colunas encontradas no arquivo. Os tipos de dados Oracle devem ser mapeados corretamente para os tipos de dados Avro, ORC ou Parquet.

Para arquivos Parquet, consulte Mapeamento de Tipo de Dados Parquet para Oracle do Pacote DBMS_CLOUD para obter detalhes.

Para arquivos ORC, consulte Mapeamento de Tipo de Dados ORC para Oracle do Pacote DBMS_CLOUD para obter detalhes.

Para arquivos Avro, consulte Mapeamento de Tipo de Dados Avro para Oracle do Pacote DBMS_CLOUD para obter detalhes.

field_list

Ignorado para arquivos Avro, ORC ou Parquet.

Os campos na origem correspondem às colunas da tabela externa por nome. Os tipos de dados de origem são convertidos no tipo de dados de coluna de tabela externa.

Para arquivos ORC, consulte Mapeamento de Tipo de Dados ORC para Oracle do Pacote DBMS_CLOUD

Para arquivos Parquet, consulte Mapeamento de Tipo de Dados Parquet para Oracle do Pacote DBMS_CLOUD para obter detalhes.

Para arquivos Avro, consulte Mapeamento de Tipo de Dados Avro para Oracle do Pacote DBMS_CLOUD para obter detalhes.

format

Para arquivos de origem Avro, ORC ou Parquet type, consulte DBMS_CLOUD Opções de Formato do Pacote para Avro, ORC ou Parquet para obter detalhes.

Exemplos de ORC

format => '{"type":"orc", "schema": "all"}'
format => json_object('type' value 'orc', 'schema' value 'first')

Exemplos de Avro

format => '{"type":"avro", "schema": "all"}'
format => json_object('type' value 'avro', 'schema' value 'first')

Exemplos de Parquet

format => '{"type":"parquet", "schema": "all"}'
format => json_object('type' value 'parquet', 'schema' value 'first')

Mapeamento de Nome de Coluna Avro, ORC ou Parquet para Nomes de Coluna Oracle

Consulte Mapeamento de Nome de Coluna Avro, ORC e Parquet para Oracle do Pacote DBMS_CLOUD para obter informações sobre mapeamento de nome de coluna e uso de conversão de nome de coluna no Oracle SQL.

Procedimento CREATE_EXTERNAL_TEXT_INDEX

Este procedimento cria um índice de texto em arquivos do Object Storage.

O procedimento CREATE_EXTERNAL_TEXT_INDEX cria índice de texto nos arquivos do Object Storage especificados no local location_uri. O índice é atualizado em intervalos regulares, para quaisquer novas adições ou exclusões feitas com arquivos no URI do local.

Sintaxe

DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX (
      credential_name  IN  VARCHAR2 DEFAULT NULL,
      location_uri     IN  VARCHAR2,
      index_name       IN  VARCHAR2,
      format           IN  CLOB     DEFAULT NULL
);

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial para acessar o local do Cloud Object Storage. Para URIs de bucket públicos, pré-autenticados ou pré-assinados, um NULL pode ser especificado.

Se você não fornecer um valor credential_name, credential_name será definido como um valor NULL.

location_uri

Especifica o URI do bucket ou da pasta do Armazenamento de Objetos.

Esse parâmetro é obrigatório.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte DBMS_CLOUD Formatos de URI do Serviço File Cloud Object Storage para obter mais informações.

index_name Especifica o nome do índice que você está construindo nos arquivos localizados no local location_uri.

Esse parâmetro é obrigatório.

format

Especifica opções de configuração adicionais. As opções são especificadas como uma string JSON.

As opções de formato suportadas são:

refresh_rate: Especifica a frequência em minutos na qual o índice local é atualizado. Novos uploads e exclusões de arquivo resultam em uma atualização de índice. O valor default é 5 minutos.

binary_files: Especifica se o conteúdo dos arquivos a serem indexados é binário. Por exemplo, PDF, MS-Word. O valor padrão é FALSE.

stop_words: Especifica uma lista de palavras de interrupção que podem ser fornecidas quando você cria índices.

O valor stop_words indica se é uma lista de palavras de interrupção ou uma tabela de palavras de interrupção. Quando um array JSON é fornecido, o parâmetro de palavras de interrupção é tratado como uma lista; caso contrário, o parâmetro de palavras de interrupção é tratado como um nome de tabela cuja coluna "STOP_WORDS" é usada para ler na lista de palavras de interrupção.

Você pode especificar palavras de parada usando os seguintes métodos:

  • Array JSON: Por exemplo: format := '{"stop_words":["king","queen"]}'
  • Nome da tabela de palavras de interrupção: Por exemplo: format := '{"stop_words":"STOP_WORDS_TABLE"}'

Se você não fornecer um parâmetro format, o format será definido como um valor NULL.

Exemplo

BEGIN 
DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX (
        credential_name => 'DEFAULT_CREDENTIAL',
        location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/ts_data/'
        index_name      => 'EMP',
        format          => JSON_OBJECT ('refresh_rate' value 10)
);
END;
/

Procedimento CREATE_HYBRID_PART_TABLE

Esse procedimento cria uma tabela particionada híbrida. Isso permite executar consultas em dados particionados híbridos do Autonomous Database usando objetos e arquivos de banco de dados na Nuvem ou objetos e arquivos de banco de dados em um diretório.

Sintaxe

DBMS_CLOUD.CREATE_HYBRID_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    partitioning_clause  IN CLOB,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela externa.

credential_name

O nome da credencial para acessar o Cloud Object Storage.

partitioning_clause

Especifica a cláusula de particionamento completo, incluindo as informações de localização para partições individuais.

Para usar diretórios, a cláusula de particionamento suporta os valores LOCATION e DEFAULT DIRECTORY.

Você pode usar curingas, bem como expressões regulares nos nomes de arquivo nos URIs de arquivo de origem da Nuvem.

As expressões regulares só podem ser usadas quando o parâmetro regexuri format está definido como TRUE.

Os caracteres "*" e "?" são considerados caracteres curinga quando o parâmetro regexuri é definido como FALSE. Quando o parâmetro regexuri é definido como TRUE, os caracteres "*" e "?" fazem parte do padrão de expressão regular especificado.

Padrões de expressão regular só são suportados para o nome do arquivo ou caminho da subpasta em seus URIs e a correspondência de padrões é idêntica à executada pela função REGEXP_LIKE. Padrões de expressão regular não são suportados para nomes de diretórios.

Por exemplo:

partitioning_clause => 'partition by range (col1)
                                (partition p1 values less than (1000) external location
				    ( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.txt''),….

Consulte REGEXP_LIKE Condition em Oracle Database 19c SQL Language Reference ou Oracle Database 23ai SQL Language Reference para obter mais informações sobre a condição REGEXP_LIKE.

column_list

Lista delimitada por vírgulas de nomes de colunas e tipos de dados para a tabela externa.

field_list

Identifica os campos nos arquivos de origem e seus tipos de dados. O valor padrão é NULL, o que significa que os campos e seus tipos de dados são determinados pelo parâmetro column_list. A sintaxe desse argumento é a mesma da cláusula field_list nas tabelas externas regulares do sistema Oracle. Para obter mais informações, consulte field_list em Oracle Database 19c Utilities ou Oracle Database 23ai Utilities.

format

As opções que descrevem o formato dos arquivos de origem. Para ver a lista de opções e saber como especificar os valores, consulte Parâmetro de Formato.

Observações sobre Uso

  • O procedimento DBMS_CLOUD.CREATE_HYBRID_PART_TABLE suporta arquivos particionados externos nos serviços suportados de armazenamento de objetos na nuvem, incluindo o Azure Blob Storage.

    A credencial é uma propriedade em nível de tabela; portanto, os arquivos externos devem estar no mesmo armazenamento de objetos.

    Consulte Formatos de URI do Cloud Object Storage para obter mais informações.

  • O procedimento DBMS_CLOUD.CREATE_HYBRID_PART_TABLE suporta arquivos particionados híbridos em diretórios, seja em um sistema de arquivos local ou em um sistema de arquivos de rede.

  • As tabelas particionadas externas criadas com DBMS_CLOUD.CREATE_HYBRID_PART_TABLE incluem duas colunas invisíveis file$path e file$name. Essas colunas ajudam a identificar de qual arquivo um registro está vindo.

    • file$path: Especifica o texto do caminho do arquivo até o início do nome do objeto.

    • file$name: Especifica o nome do objeto, incluindo todo o texto que segue o nome do bucket.

Exemplos

BEGIN  
   DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
      table_name =>'HPT1',  
      credential_name =>'OBJ_STORE_CRED',  
      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) external location
                                    ( ''&base_URL/file_11.txt'')
                                 ,
                                 partition p2 values less than (2000) external location
                                    ( ''&base_URL/file_21.txt'')
                                 ,
                                 partition p3 values less than (3000)
                                 )'
     );
   END;
/ 


BEGIN
   DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
    table_name  => 'HPT1',
    format      => json_object('delimiter'value ',', 'recorddelimiter'value 'newline'),
    column_list => 'NAME VARCHAR2(30), GENDER VARCHAR2(10), BALANCE number',
    partitioning_clause => 'partition by range (B  2  ALANCE)
               (partition p1 values less than (1000) external DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION (''Scott_male_1000.csv''),
                partition p2 values less than (2000) external DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION (''Mary_female_3000.csv''),
                partition p3 values less than (3000))' );
END;
/

Procedimento DELETE_ALL_OPERATIONS

Este procedimento limpa todas as operações de carregamento de dados registradas na tabela user_load_operations do seu esquema ou limpa todas as operações de carregamento de dados do tipo especificado, conforme indicado com o parâmetro type.

Sintaxe

DBMS_CLOUD.DELETE_ALL_OPERATIONS (
	type      IN VARCHAR DEFAULT NULL);

Parâmetros

Parâmetro Descrição

type

Especifica o tipo de operação a ser excluída. Valores de tipo podem ser encontrados na coluna TYPE na tabela user_load_operations.

Se nenhum type for especificado, todas as linhas serão excluídas.

Observações de Uso

  • DBMS_CLOUD.DELETE_ALL_OPERATIONS não exclui operações em execução no momento (operações com status "Em Execução").

Procedimento DELETE_FILE

Este procedimento remove o arquivo especificado do diretório indicado no Autonomous Database.

Sintaxe

 DBMS_CLOUD.DELETE_FILE ( 
       directory_name     IN VARCHAR2,
       file_name          IN VARCHAR2,
       force              IN BOOLEAN DEFAULT FALSE); 

Parâmetros

Parâmetro Descrição

directory_name

O nome do diretório na instância do Autonomous Database.

file_name

O nome do arquivo a ser removido.

force

Ignore e não relate erros se o arquivo não existir. Os valores válidos são: TRUE e FALSE. O valor default é FALSE.

Observação:

Para executar DBMS_CLOUD.DELETE_FILE com um usuário diferente de ADMIN, você precisa conceder privilégios de gravação no diretório que contém o arquivo a esse usuário.Por exemplo, execute o seguinte comando como ADMIN para conceder privilégios de gravação a atpc_user:
GRANT WRITE ON DIRECTORY data_pump_dir TO atpc_user;

Exemplo

BEGIN
   DBMS_CLOUD.DELETE_FILE(
      directory_name =>  'DATA_PUMP_DIR',
      file_name => 'exp1.dmp' );
   END;
/ 

Procedimento DELETE_OBJECT

Este procedimento exclui o objeto especificado no armazenamento de objetos.

Sintaxe

DBMS_CLOUD.DELETE_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       force                IN BOOLEAN DEFAULT FALSE);

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial para acessar o Cloud Object Storage.

object_uri

Objeto ou URI do arquivo para o objeto a ser excluído. O formato do URI depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte Formatos de URI do Cloud Object Storage.

force

Ignorar e não relatar erros se o objeto não existir. Os valores válidos são: TRUE e FALSE. O valor default é FALSE.

Exemplo

BEGIN
   DBMS_CLOUD.DELETE_OBJECT(
       credential_name => 'DEF_CRED_NAME',
       object_uri => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.dmp' );
   END;
/ 

Procedimento DELETE_OPERATION

Este procedimento limpa as entradas de carga de dados para o ID de operação especificado registrado nas tabelas user_load_operations ou dba_load_operations no seu esquema.

Sintaxe

DBMS_CLOUD.DELETE_OPERATION (
	id      IN NUMBER);

Parâmetros

Parâmetro Descrição

id

Especifica o ID da operação associado às entradas do arquivo de log que você deseja excluir.

Exemplo

SELECT id FROM user_load_operations WHERE type LIKE '%BAD%';
EXEC DBMS_CLOUD.DELETE_OPERATION(id);

Procedimento DROP_EXTERNAL_TEXT_INDEX

Este procedimento elimina o índice de texto nos arquivos do Object Storage.

O procedimento DROP_EXTERNAL_TEXT_INDEX elimina o índice especificado criado com o procedimento CREATE_EXTERNAL_TEXT_INDEX.

Sintaxe

DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
      index_name       IN  VARCHAR2,
);

Parâmetros

Parâmetro Descrição
index_name

Especifica o nome do índice que você está eliminando.

O nome do índice deve corresponder ao nome fornecido no momento da criação do índice.

Esse parâmetro é obrigatório.

Exemplo

BEGIN 
DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
        index_name => 'EMP',
);
END;
/

Procedimento EXPORT_DATA

Esse procedimento exporta dados do Autonomous Database com base no resultado de uma consulta. Este procedimento é sobrecarregado e suporta a gravação de arquivos na nuvem ou em um diretório.

Com base no parâmetro format type, o procedimento exporta arquivos para a Nuvem ou para um local de diretório como arquivos de texto no formato CSV, JSON, Parquet ou XML.

Sintaxe

DBMS_CLOUD.EXPORT_DATA (
      credential_name   IN VARCHAR2 DEFAULT NULL,
      file_uri_list     IN CLOB,
      format            IN CLOB,
      query             IN CLOB);

DBMS_CLOUD.EXPORT_DATA (
      credential_name   IN VARCHAR2 DEFAULT NULL,
      file_uri_list     IN CLOB DEFAULT NULL,
      format            IN CLOB DEFAULT NULL,
      query             IN CLOB DEFAULT NULL,
      operation_id      OUT NOCOPY NUMBER);

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Quando o parâmetro de credencial não é incluído, isso especifica a saída para um diretório.

file_uri_list

Existem diferentes formulários, dependendo do valor do parâmetro de formato e se você incluir um parâmetro de credencial:
  • Quando o valor type do parâmetro format é json: O JSON no Armazenamento de Objetos ou no local do diretório especificado é salvo com um nome de arquivo gerado com base no valor do parâmetro file_uri_list. Consulte Nomenclatura de Arquivo para Saída de Texto (CSV, JSON, Parquet ou XML) para obter mais informações.

  • Quando o valor type do parâmetro format é datapump, file_uri_list é uma lista delimitada por vírgulas dos arquivos de dump. Isso especifica os arquivos a serem criados no Armazenamento de Objetos. O uso de caracteres curinga e de substituição não é suportado no file_uri_list.

  • Quando o parâmetro credential_name não for especificado, você fornecerá um nome de diretório em file_uri_list.

O formato dos URIs depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte Formatos de URI do Cloud Object Storage.

format

Uma string JSON que fornece opções de formato de exportação.

A opção suportada é:

  • type: A opção type format é obrigatória e deve ter um dos valores: csv | datapump | json | parquet | xml.

Consulte DBMS_CLOUD Opções de Formato do Pacote para EXPORT_DATA.

query

Use esse parâmetro para especificar uma instrução SELECT para que apenas os dados necessários sejam exportados. A consulta determina o conteúdo dos arquivos exportados como arquivos de texto CSV, JSON, Parquet ou XML ou como arquivos de dump. Por exemplo:

SELECT warehouse_id, quantity FROM inventories

Quando o valor format type é json, cada resultado da consulta é verificado e, se não for JSON, conforme determinado com a função: JSON_OBJECT_T.parse(), DBMS_CLOUD.EXPORT_DATA transformará a consulta para incluir a função JSON_OBJECT para converter a linha em JSON. Consulte JSON_OBJECT em Oracle Database 19c SQL Language Reference ou Oracle Database 23ai SQL Language Reference e JSON_OBJECT_T Object Type em Oracle Database 19c PL/SQL Packages and Types Reference ou Oracle Database 23ai PL/SQL Packages and Types Reference para obter mais informações.

Por exemplo:

SELECT JSON_OBJECT(* RETURNING CLOB) from(SELECT warehouse_id, quantity FROM inventories)

operation_id

Use esse parâmetro para rastrear o andamento e o status final da operação de exportação como ID correspondente na view USER_LOAD_OPERATIONS.

Observações de Uso:

  • O valor do parâmetro query fornecido pode ser uma consulta avançada, se necessário, como uma consulta que inclui junções ou subconsultas.

  • Dependendo do parâmetro de formato especificado, DBMS_CLOUD.EXPORT_DATA gera os resultados da consulta especificada no Cloud Object Store ou em um local de diretório nos formatos de arquivo CSV, JSON, Parquet ou XML.

    Consulte Exportar Dados para o Armazenamento de Objetos como Texto Usando DBMS_CLOUD.EXPORT_DATA e Exportar dados para um Diretório Usando DBMS_CLOUD.EXPORT_DATA para obter mais informações sobre o uso de DBMS_CLOUD.EXPORT_DATA com arquivos de saída CSV, JSON, Parquet ou XML.

  • Para saída CSV, JSON ou XML, por padrão, quando um arquivo gerado contém 10 MB de dados, um novo arquivo de saída é criado. No entanto, se você tiver menos de 10 MB de dados de resultado, poderá ter vários arquivos de saída, dependendo do serviço de banco de dados e do número de ECPUs (OCPUs, se o seu banco de dados usar OCPUs) da instância do Autonomous Database.

    Consulte Nomenclatura de Arquivo para Saída de Texto (CSV, JSON, Parquet ou XML) para obter mais informações.

    O tamanho do chunk do arquivo de saída padrão é 10 MB para CSV, JSON ou XML. Você pode alterar esse valor com a opção maxfilesize do parâmetro format. Consulte DBMS_CLOUD Opções de Formato do Pacote para EXPORT_DATA para obter mais informações.

  • Para saída Parquet, cada arquivo gerado tem menos de 128 MB e vários arquivos de saída podem ser gerados. No entanto, se você tiver menos de 128 MB de dados de resultado, poderá ter vários arquivos de saída, dependendo do serviço de banco de dados e do número de ECPUs (OCPUs, se o seu banco de dados usar OCPUs) da instância do Autonomous Database.

    Consulte Nomenclatura de Arquivo para Saída de Texto (CSV, JSON, Parquet ou XML) para obter mais informações.

  • O formato de saída parquet só pode ser usado com serviços de banco de dados altos e médios para Autonomous Databases na Infraestrutura Dedicada do Exadata.

Observações de Uso de DBMS_CLOUD.EXPORT_DATA com Saída para um Diretório

  • O diretório fornecido deve existir e você deve estar conectado como o usuário ADMIN ou ter acesso WRITE ao diretório.

  • O DBMS_CLOUD.EXPORT_DATA não cria diretórios.

  • O procedimento não substitui arquivos. Por exemplo, se um arquivo de dump no file_uri_list existir, o DBMS_CLOUD.EXPORT_DATA reportará um erro como:

    ORA-31641: unable to create dump file  "/u02/exports/123.dmp"
    ORA-27038: created file already exists

Exemplos

O exemplo a seguir mostra DBMS_CLOUD.EXPORT_DATA com o parâmetro de formato type com o valor json:

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.json', 
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'json', 'compression' value 'gzip'));
     );
   END;
/  

O exemplo a seguir mostra DBMS_CLOUD.EXPORT_DATA com o parâmetro de formato type com o valor xml:

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.xml', 
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'xml', 'compression' value 'gzip'));
     );
   END;
/

O exemplo a seguir mostra DBMS_CLOUD.EXPORT_DATA com o parâmetro de formato type com o valor csv:

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp.csv', 
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'csv', 'delimiter' value '|', 'compression' value 'gzip', 'header' value true ));
     );
   END;
/  

Procedimento e Função GET_OBJECT

Este procedimento é sobrecarregado. O form de procedimento lê um objeto do Cloud Object Storage e o copia para o Autonomous Database. O form de função lê um objeto do Cloud Object Storage e retorna um BLOB para o Autonomous Database.

Sintaxe

DBMS_CLOUD.GET_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       directory_name       IN VARCHAR2,
       file_name            IN VARCHAR2 DEFAULT  NULL,
       startoffset          IN NUMBER DEFAULT  0,
       endoffset            IN NUMBER DEFAULT  0,
       compression          IN VARCHAR2 DEFAULT  NULL);


DBMS_CLOUD.GET_OBJECT(
       credential_name      IN VARCHAR2 DEFAULT NULL,
       object_uri           IN VARCHAR2,
       startoffset          IN NUMBER DEFAULT  0,
       endoffset            IN NUMBER DEFAULT  0,
       compression          IN VARCHAR2 DEFAULT  NULL)
RETURN BLOB;

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial para acessar o Cloud Object Storage.

object_uri

URI do objeto ou do arquivo. O formato do URI depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte Formatos de URI do Cloud Object Storage.

directory_name

O nome do diretório no banco de dados.

Rodapé 1

file_name

Especifica o nome do arquivo a ser criado. Se o nome do arquivo não for especificado, o nome do arquivo será obtido após a última barra no parâmetro object_uri. Para casos especiais, por exemplo, quando o nome do arquivo contiver barras, use o parâmetro file_name.

startoffset

O deslocamento, em bytes, de onde o procedimento inicia a leitura.

endoffset

O deslocamento, em bytes, até onde o procedimento interrompe a leitura.

compression

Especifica a compactação usada para armazenar o objeto. Quando o parâmetro compression é definido como ‘AUTO’, o arquivo é descompactado (o valor ‘AUTO’ implica que o objeto especificado com object_uri é compactado com Gzip).

Rodapé 1

Observação:

Para executar DBMS_CLOUD.GET_OBJECT com um usuário distinto de ADMIN, você precisa conceder privilégios WRITE no diretório a esse usuário. Por exemplo, execute o seguinte comando como ADMIN para conceder privilégios de gravação a atpc_user:

GRANT WRITE ON DIRECTORY data_pump_dir TO atpc_user;

Valores de Retorno

O form de função é lido no Armazenamento de Objetos e DBMS_CLOUD.GET_OBJECT retorna um BLOB.

Exemplos

BEGIN 
   DBMS_CLOUD.GET_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file.txt',
     directory_name => 'DATA_PUMP_DIR'); 
END;
/

Para ler dados de caracteres de um arquivo no Armazenamento de Objetos:

SELECT to_clob(
     DBMS_CLOUD.GET_OBJECT(
       credential_name => 'OBJ_STORE_CRED',
       object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file.txt'))
FROM DUAL;

Para adicionar uma imagem colocada no Armazenamento de Objetos em um BLOB no banco de dados:


DECLARE
   l_blob BLOB := NULL;
BEGIN
   l_blob := DBMS_CLOUD.GET_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/MyImage.gif' );
END;
/

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.

Função LIST_FILES

Esta função lista os arquivos no diretório especificado. Os resultados incluem os nomes de arquivos e metadados adicionais sobre os arquivos, como tamanho do arquivo em bytes, timestamp de criação e o último timestamp de modificação.

Sintaxe

DBMS_CLOUD.LIST_FILES (
	directory_name      IN VARCHAR2)
       RETURN TABLE;

Parâmetros

Parâmetro Descrição

directory_name

O nome do diretório no banco de dados.

Observações sobre Uso

  • Para executar DBMS_CLOUD.LIST_FILES com um usuário distinto de ADMIN, você precisa conceder privilégios de leitura no diretório a esse usuário.Por exemplo, execute o seguinte comando como ADMIN para conceder privilégios de leitura a atpc_user:

    GRANT READ ON DIRECTORY data_pump_dir TO atpc_user;
  • Essa é uma função de tabela em pipeline com tipo de retorno como DBMS_CLOUD_TYPES.list_object_ret_t.

  • O DBMS_CLOUD.LIST_FILES não obtém o valor da soma de verificação e retorna NULL para esse campo.

Exemplo

Essa é uma função em pipeline que retorna uma linha para cada arquivo. Por exemplo, use a consulta a seguir para usar esta função:

SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR');

OBJECT_NAME       BYTES   CHECKSUM      CREATED              LAST_MODIFIED
------------ ---------- ----------    ---------------------  ---------------------
cwallet.sso        2965               2018-12-12T18:10:47Z   2019-11-23T06:36:54Z

Função LIST_OBJECTS

Esta função lista objetos no local especificado no armazenamento de objetos. Os resultados incluem os nomes de objetos e metadados adicionais sobre os objetos, como tamanho, soma de verificação, timestamp de criação e o último timestamp de modificação.

Sintaxe

DBMS_CLOUD.LIST_OBJECTS (
       credential_name      IN VARCHAR2,
       location_uri         IN VARCHAR2)
   RETURN TABLE;

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial para acessar o Cloud Object Storage.

location_uri

URI do objeto ou do arquivo. O formato do URI depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte Formatos de URI do Cloud Object Storage.

Observações sobre Uso

  • Dependendo dos recursos do armazenamento de objetos, o DBMS_CLOUD.LIST_OBJECTS não retorna valores para determinados atributos e o valor de retorno do campo é NULL nesse caso.

    Todos os Armazenamentos de Objetos suportados retornam valores para os campos OBJECT_NAME, BYTES e CHECKSUM.

    A tabela a seguir mostra o suporte para os campos CREATED e LAST_MODIFIED pelo Armazenamento de Objetos:

    Armazenamento de Objetos CREATED LAST_MODIFIED
    Oracle Cloud Infrastructure Nativo Retorna o timestamp Retorna o timestamp
    Swift da Oracle Cloud Infrastructure Retorna NULL Retorna o timestamp
    Amazon S3 Retorna NULL Retorna o timestamp
    Compatível com Amazon S3 Retorna NULL Retorna o timestamp
    Azure Retorna o timestamp Retorna o timestamp
  • O valor da soma de verificação é a soma de verificação MD5. Esse é um número hexadecimal de 32 caracteres que é calculado no conteúdo do objeto.

  • Essa é uma função de tabela em pipeline com tipo de retorno como DBMS_CLOUD_TYPES.list_object_ret_t.

Exemplo

Essa é uma função em pipeline que retorna uma linha para cada objeto. Por exemplo, use a consulta a seguir para usar esta função:

SELECT * FROM DBMS_CLOUD.LIST_OBJECTS('OBJ_STORE_CRED', 
    'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/');


OBJECT_NAME   BYTES              CHECKSUM                       CREATED         LAST_MODIFIED
------------ ---------- -------------------------------- --------------------- --------------------
cwallet.sso   2965      2339a2731ba24a837b26d344d643dc07 2019-11-23T06:36:54Z          

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.

Procedimento MOVE_OBJECT

Esse procedimento move um objeto de um bucket ou pasta do Cloud Object Storage para outro.

O bucket ou pasta de origem e destino pode estar no mesmo provedor de armazenamento de Objetos na Nuvem ou em outro provedor.

Quando a origem e o destino estiverem em Armazenamentos de Objetos distintos ou tiverem contas diferentes com o mesmo provedor de nuvem, você poderá fornecer nomes de credenciais separados para os locais de origem e destino.

Por padrão, o nome da credencial de origem também é usado pelo local de destino quando o nome da credencial de destino não é fornecido.

Sintaxe

DBMS_CLOUD.MOVE_OBJECT (
    source_credential_name  IN  VARCHAR2 DEFAULT NULL,
    source_object_uri       IN  VARCHAR2,
    target_object_uri       IN  VARCHAR2,
    target_credential_name  IN  VARCHAR2 DEFAULT NULL
);

Parâmetros

Parâmetro Descrição

source_credential_name

O nome da credencial para acessar o Cloud Object Storage de origem.

Se você não fornecer um valor source_credential_name, credential_name será definido como NULL.

source_object_uri

Especifica o URI, que aponta para o local do bucket ou da pasta do Object Storage de origem.

Esse parâmetro é obrigatório.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte Formatos de URI do Cloud Object Storage para obter mais informações.

target_object_uri

Especifica o URI do bucket ou pasta do Object Storage de destino, onde os arquivos precisam ser movidos.

Esse parâmetro é obrigatório.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte Formatos de URI do Cloud Object Storage para obter mais informações.

target_credential_name

O nome da credencial para acessar o local de destino do Cloud Object Storage.

Se você não fornecer um valor target_credential_name, o target_object_uri será definido como o valor source_credential_name.

Exemplo

BEGIN 
DBMS_CLOUD.MOVE_OBJECT (
    source_credential_name => 'OCI_CRED',
    source_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/bgfile.csv',
    target_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/myfile.csv'
);
END;
/

Procedimento PUT_OBJECT

Este procedimento é sobrecarregado. De uma forma, o procedimento copia um arquivo do Autonomous Database para o Cloud Object Storage. De outra, o procedimento copia um BLOB do Autonomous Database para o Cloud Object Storage.

Sintaxe

DBMS_CLOUD.PUT_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       directory_name       IN VARCHAR2,
       file_name            IN VARCHAR2
       compression          IN VARCHAR2 DEFAULT  NULL);


DBMS_CLOUD.PUT_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       contents             IN BLOB
       compression          IN VARCHAR2 DEFAULT  NULL);

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial para acessar o Cloud Object Storage.

object_uri

URI do objeto ou do arquivo. O formato do URI depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte Formatos de URI do Cloud Object Storage.

directory_name

O nome do diretório no Autonomous Database.

Rodapé 1

contents

Especifica o BLOB a ser copiado do Autonomous Database para o Cloud Object Storage.

file_name

O nome do arquivo no diretório especificado.

compression

Especifica a compactação usada para armazenar o objeto.

Valor padrão: NULL

Rodapé 1

Observação:

Para executar DBMS_CLOUD.PUT_OBJECT com um usuário que não seja ADMIN, você precisa conceder privilégios de leitura no diretório a esse usuário. Por exemplo, execute o seguinte comando como ADMIN para conceder privilégios de leitura a atpc_user:

GRANT READ ON DIRECTORY data_pump_dir TO atpc_user;

Exemplo

Para tratar dados BLOB após o processamento no banco de dados e, em seguida, armazenar os dados diretamente em um arquivo no armazenamento de objetos:

DECLARE
      my_blob_data BLOB;
BEGIN 
 /* Some processing producing BLOB data and populating my_blob_data */
DBMS_CLOUD.PUT_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/my_new_file',
     contents => my_blob_data)); 
END;
/

Observações sobre Uso

Dependendo do Cloud Object Storage, o tamanho do objeto que você transfere é limitado da seguinte forma:

Serviço Cloud Object Storage Limite de Tamanho de Transferência de Objeto

Oracle Cloud Infrastructure Object Storage

50 GB

Amazon S3

5 GB

Armazenamento Blob do Azure

256 MB

Compatível com Amazon S3

Definido pelo provedor de armazenamento de objetos. Para obter mais informações, consulte a documentação do provedor.

O armazenamento de objetos do Oracle Cloud Infrastructure não permite gravar arquivos em um bucket público sem fornecer credenciais (o Oracle Cloud Infrastructure permite que os usuários façam download de objetos de buckets públicos). Portanto, você deve fornecer um nome de credencial com credenciais válidas para armazenar um objeto em um bucket público do Oracle Cloud Infrastructure usando PUT_OBJECT.

Consulte Formatos de URI do Cloud Object Storage para obter mais informações.

Procedimento SYNC_EXTERNAL_PART_TABLE

Esse procedimento simplifica a atualização de uma tabela particionada externa de arquivos na Nuvem. Execute esse procedimento sempre que novas partições forem adicionadas ou quando as partições forem removidas da origem de Armazenamento de Objetos da tabela particionada externa.

Sintaxe

DBMS_CLOUD.SYNC_EXTERNAL_PART_TABLE (
	table_name        IN VARCHAR2,
	schema_name       IN VARCHAR2 DEFAULT,
	update_columns    IN BOOLEAN DEFAULT);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela de destino. É necessário criar a tabela de destino antes de executar DBMS_CLOUD.SYNC_EXTERNAL_PART_TABLE.

schema_name

O nome do esquema em que a tabela de destino reside. O valor padrão é NULL, o que significa que a tabela de destino está no mesmo esquema que o usuário que está executando o procedimento.

update_columns

Os novos arquivos podem introduzir uma alteração no esquema. As atualizações suportadas incluem: novas colunas, colunas excluídas. Atualizações de colunas existentes, por exemplo, uma alteração no tipo de dados gera erros.

Valor padrão: falso

Procedimento VALIDATE_EXTERNAL_PART_TABLE

Esse procedimento valida os arquivos de origem de uma tabela particionada externa, gera informações de log e armazena as linhas que não correspondem às opções de formato especificadas para a tabela externa em uma tabela de arquivos inválidos do Autonomous Database. O formulário sobrecarregado permite que você use o parâmetro operation_id.

Sintaxe

DBMS_CLOUD.VALIDATE_EXTERNAL_PART_TABLE (
       table_name                 IN VARCHAR2,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);


DBMS_CLOUD.VALIDATE_EXTERNAL_PART_TABLE (
       table_name                 IN VARCHAR2,
       operation_id               OUT NUMBER,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela externa.

operation_id

Use esse parâmetro para rastrear o andamento e o status final da operação de carga como o ID correspondente na view USER_LOAD_OPERATIONS.

partition_name

Se definido, apenas uma partição específica será validada. Se não for especificado, leia todas as partições sequencialmente até atingir rowcount.

subpartition_name

Se definido, apenas uma subpartição específica será validada. Se não for especificado, leia sequencialmente todas as partições ou subpartições externas até atingir rowcount.

schema_name

O nome do esquema em que a tabela externa reside. O valor padrão é NULL, o que significa que a tabela externa está no mesmo esquema que o usuário que está executando o procedimento.

rowcount

Número de linhas a serem verificadas. O valor padrão é NULL, o que significa que todas as linhas dos arquivos de origem são verificadas.

partition_key_validation

Somente para uso interno. Não use esse parâmetro.

stop_on_error

Determina se a validação deve ser interrompida quando uma linha for rejeitada. O valor padrão é TRUE, o que significa que a validação é interrompida na primeira linha rejeitada. A definição do valor como FALSE especifica que a validação não é interrompida na primeira linha rejeitada e valida todas as linhas até o valor especificado para o parâmetro rowcount.

Procedimento VALIDATE_EXTERNAL_TABLE

Este procedimento valida os arquivos de origem de uma tabela externa, gera informações de log e armazena as linhas que não correspondem às opções de formato especificadas para a tabela externa em uma tabela de arquivos incorretos no Autonomous Database. O formulário sobrecarregado permite que você use o parâmetro operation_id.

Sintaxe

DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE (
	table_name      IN VARCHAR2,
	schema_name     IN VARCHAR2 DEFAULT,		
	rowcount        IN NUMBER DEFAULT,
	stop_on_error   IN BOOLEAN DEFAULT);


DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE(
	table_name      IN VARCHAR2,
	operation_id    OUT NOCOPY NUMBER,
	schema_name     IN VARCHAR2 DEFAULT NULL,		
	rowcount        IN NUMBER DEFAULT 0,
	stop_on_error   IN BOOLEAN DEFAULT TRUE);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela externa.

operation_id

Use esse parâmetro para rastrear o andamento e o status final da operação de carga como o ID correspondente na view USER_LOAD_OPERATIONS.

schema_name

O nome do esquema em que a tabela externa reside. O valor padrão é NULL, o que significa que a tabela externa está no mesmo esquema que o usuário que está executando o procedimento.

rowcount

Número de linhas a serem verificadas. O valor padrão é NULL, o que significa que todas as linhas dos arquivos de origem são verificadas.

stop_on_error

Determina se a validação deve ser interrompida quando uma linha for rejeitada. O valor padrão é TRUE, o que significa que a validação é interrompida na primeira linha rejeitada. A definição do valor como FALSE especifica que a validação não é interrompida na primeira linha rejeitada e valida todas as linhas até o valor especificado para o parâmetro rowcount.

Se a tabela externa se mencionar os arquivos Avro, ORC ou Parquet, a validação será interrompida na primeira linha rejeitada.

Quando a tabela externa especifica o parâmetro format type definido com o valor avro, orc ou parquet, o parâmetro stop_on_error sempre tem efetivamente o valor TRUE. Assim, o arquivo inválido de tabela sempre estará vazio para uma tabela externa que menciona os arquivos Avro, ORC ou Parquet.

Observações sobre Uso

  • O DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE funciona com tabelas externas particionadas e tabelas híbridas particionadas. Isso potencialmente lê dados de todas as partições externas até que rowcount seja atingido ou stop_on_error seja aplicado. Você não tem controle sobre qual partição, ou partes de uma partição, é lida em que ordem.

Procedimento VALIDATE_HYBRID_PART_TABLE

Esse procedimento valida os arquivos de origem de uma tabela particionada híbrida, gera informações de log e armazena as linhas que não correspondem às opções de formato especificadas para a tabela híbrida em uma tabela de arquivos inválidos do Autonomous Database. O formulário sobrecarregado permite que você use o parâmetro operation_id.

Sintaxe

DBMS_CLOUD.VALIDATE_HYBRID_PART_TABLE (
       table_name                 IN VARCHAR2,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);


DBMS_CLOUD.VALIDATE_HYBRID_PART_TABLE (
       table_name                 IN VARCHAR2,
       operation_id               OUT NUMBER,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela externa.

operation_id

Use esse parâmetro para rastrear o andamento e o status final da operação de carga como o ID correspondente na view USER_LOAD_OPERATIONS.

partition_name

Se definido, apenas uma partição específica será validada. Se não for especificado, leia todas as partições externas sequencialmente até que rowcount seja atingido.

subpartition_name

Se definido, apenas uma subpartição específica será validada. Se não for especificado, leia sequencialmente todas as partições ou subpartições externas até atingir rowcount.

schema_name

O nome do esquema em que a tabela externa reside. O valor padrão é NULL, o que significa que a tabela externa está no mesmo esquema que o usuário que está executando o procedimento.

rowcount

Número de linhas a serem verificadas. O valor padrão é NULL, o que significa que todas as linhas dos arquivos de origem são verificadas.

partition_key_validation

Somente para uso interno. Não use esse parâmetro.

stop_on_error

Determina se a validação deve ser interrompida quando uma linha for rejeitada. O valor padrão é TRUE, o que significa que a validação é interrompida na primeira linha rejeitada. A definição do valor como FALSE especifica que a validação não é interrompida na primeira linha rejeitada e valida todas as linhas até o valor especificado para o parâmetro rowcount.