DBMS_CLOUD per oggetti e file

In questa sezione vengono descritti i sottoprogrammi DBMS_CLOUD utilizzati per l'utilizzo di oggetti e file.

Prerequisiti

Come sviluppatore, puoi utilizzare le procedure DBMS_CLOUD con Autonomous Database distribuite su Oracle Public Cloud, Multicloud o Exadata Cloud@Customer.

A seconda della scelta di distribuzione, è necessario soddisfare i seguenti prerequisiti per utilizzare le procedure DBMS_CLOUD con i provider di servizi Amazon S3, Azure Blob Storage e Google Cloud Storage.

Una connettività in uscita deve essere stata configurata mediante un gateway NAT dall'amministratore della flotta, come descritto di seguito.
  • Crea un gateway NAT nella rete cloud virtuale (VCN) in cui risiedono le tue risorse di Autonomous Database seguendo le istruzioni riportate in Crea un gateway NAT nella documentazione di Oracle Cloud Infrastructure.
  • Dopo aver creato il gateway NAT, aggiungere una regola di instradamento e una regola di sicurezza di uscita a ogni subnet (nella VCN) in cui risiedono le risorse di Autonomous Database in modo che queste risorse possano utilizzare il gateway per ottenere una chiave pubblica dall'istanza di Azure AD:
    1. Andare alla pagina Dettagli subnet per la subnet.
    2. Nella scheda Informazioni subnet, fare clic sul nome della tabella di instradamento della subnet per visualizzare la relativa pagina Dettagli tabella di instradamento.
    3. Nella tabella delle regole di instradamento esistenti, verificare se esiste già una regola con le seguenti caratteristiche:
      • Data: 0.0.0.0/0
      • Tipo di destinazione: gateway NAT
      • Destinazione: il nome del gateway NAT appena creato nella VCN

      Se la regola non esiste, fare clic su Aggiungi regole di instradamento e aggiungere una regola di instradamento con queste caratteristiche.

    4. Tornare alla pagina Dettagli subnet per la subnet.
    5. Nella tabella Elenchi di sicurezza della subnet, fare clic sul nome della lista di sicurezza della subnet per visualizzare la relativa pagina Dettagli lista di sicurezza.
    6. Nel menu laterale, in Risorse, fare clic su Regole di uscita.
    7. Nella tabella delle regole di uscita esistenti, verificare se esiste già una regola con le seguenti caratteristiche:
      • Tipo di destinazione: CIDR
      • Data: 0.0.0.0/0
      • Protocollo IP: TCP
      • Intervallo porte di origine: 443
      • Intervallo di porte di destinazione: tutte

      Se una regola di questo tipo non esiste, fare clic su Aggiungi regole di uscita e aggiungere una regola di uscita con queste caratteristiche.

Le impostazioni del proxy HTTP nell'ambiente devono consentire al database di accedere al provider di servizi cloud.

Queste impostazioni vengono definite dall'amministratore della flotta durante la creazione dell'infrastruttura Exadata Cloud@Customer, come descritto in Uso della console per eseguire il provisioning di Exadata Database Service su Cloud@Customer.

Nota

La configurazione di rete, incluso il proxy HTTP, può essere modificata solo fino a quando lo stato dell'infrastruttura Exadata non è Richiede attivazione. Una volta attivato, non è possibile modificare tali impostazioni.

L'impostazione di un proxy HTTP per un'infrastruttura Exadata già fornita richiede una richiesta di servizio (SR) in My Oracle Support. Per informazioni dettagliate, vedere Create a Service Request in My Oracle Support.

DBMS_CLOUD Programmi secondari per oggetti e file

Sottoprogrammi per la gestione di oggetti e file all'interno del pacchetto DBMS_CLOUD.

Sottoprogramma Descrizione

COPY_COLLECTION Procedura

Questa procedura carica i dati nella raccolta SODA esistente dallo storage degli oggetti cloud o dai file di una directory.

COPY_DATA Procedura

Questa procedura carica i dati nelle tabelle Autonomous Database esistenti dallo storage degli oggetti cloud o dai file in una directory.

COPY_DATA Procedura per i file Avro, ORC o Parquet

Questa procedura con il parametro format type impostato sul valore orc, parquet o avro carica i dati nelle tabelle Autonomous Database esistenti dai file ORC, Parquet o Avro nel cloud o dai file ORC, Parquet o Avro in una directory.

Analogamente ai file di testo, i dati vengono copiati dal file ORC, Parquet o Avro di origine nella tabella interna preesistente.

COPY_OBJECT Procedura

Questa procedura copia i file da un bucket dello storage degli oggetti cloud a un altro.

CREATE_EXTERNAL_TABLE Procedura

Questa procedura crea una tabella esterna sui file nel cloud o sui file di una directory. Ciò consente di eseguire query su dati esterni da Autonomous Database.

CREATE_EXTERNAL_TABLE Procedura per i file Avro, ORC o Parquet

Questa procedura con il parametro format type impostato sul valore parquet, orc o avro crea una tabella esterna con i file in formato Parquet, ORC o Avro nel cloud o in una directory.

Ciò consente di eseguire query su dati esterni da Autonomous Database.

CREATE_EXTERNAL_TEXT_INDEX Procedura

Questa procedura crea un indice di testo nei file dell'area di memorizzazione degli oggetti.

CREATE_HYBRID_PART_TABLE Procedura

Questa procedura crea una tabella partizionata ibrida. Ciò consente di eseguire query su dati con partizionamento ibrido da Autonomous Database.

DELETE_ALL_OPERATIONS Procedura

Questa procedura cancella tutte le operazioni di caricamento dati registrate nella tabella user_load_operations nello schema oppure cancella tutte le operazioni di caricamento dati del tipo specificato, come indicato con il parametro type.

DELETE_FILE Procedura

Questa procedura rimuove il file specificato dalla directory specificata in Autonomous Database

DELETE_OBJECT Procedura

Questa procedura elimina l'oggetto specificato nell'area di memorizzazione degli oggetti.

DELETE_OPERATION Procedura

Questa procedura accetta un valore operation_id come input ed elimina i log associati al valore operation_id specificato.

DROP_EXTERNAL_TEXT_INDEX Procedura

Questa procedura elimina l'indice di testo nei file dell'area di memorizzazione degli oggetti.

EXPORT_DATA Procedura

Questa procedura esporta i dati da Autonomous Database nei file nel cloud in base al risultato di una query. Il form sovraccarico consente di utilizzare il parametro operation_id. A seconda dell'opzione type del parametro format specificata, la procedura esporta le righe nell'area di memorizzazione degli oggetti cloud come testo con le opzioni CSV, JSON, Parquet o XML

GET_OBJECT Procedura e funzione

Questa procedura è sovraccaricata. Il form della procedura legge un oggetto dallo storage degli oggetti cloud e lo copia in Autonomous Database. Il form funzione legge un oggetto dallo storage degli oggetti cloud e restituisce un valore BLOB all'Autonomous Database.

Funzione LIST_FILES

Questa funzione elenca i file nella directory specificata. I risultati includono i nomi dei file e metadati aggiuntivi relativi ai file, ad esempio la dimensione dei file in byte, l'indicatore orario di creazione e l'indicatore orario dell'ultima modifica.

Funzione LIST_OBJECTS

Questa funzione elenca gli oggetti nella posizione specificata nell'area di memorizzazione degli oggetti. I risultati includono i nomi degli oggetti e metadati aggiuntivi relativi agli oggetti, ad esempio dimensione, checksum, indicatore orario di creazione e indicatore orario dell'ultima modifica.

MOVE_OBJECT Procedura

Questa procedura sposta un oggetto da un bucket di storage degli oggetti cloud a un altro.

PUT_OBJECT Procedura

Questa procedura è sovraccaricata. In un modulo la procedura copia un file da Autonomous Database nello storage degli oggetti cloud. In un altro modulo, la procedura copia un file BLOB da Autonomous Database nello storage degli oggetti cloud.

SYNC_EXTERNAL_PART_TABLE Procedura

Questa procedura semplifica l'aggiornamento di una tabella partizionata esterna dai file nel cloud. Eseguire questa procedura ogni volta che vengono aggiunte nuove partizioni o quando le partizioni vengono rimosse dall'origine dell'area di memorizzazione degli oggetti per la tabella partizionata esterna.

VALIDATE_EXTERNAL_TABLE Procedura

Questa procedura convalida i file di origine per una tabella esterna, genera le informazioni di log e memorizza le righe che non corrispondono alle opzioni di formato specificate per la tabella esterna in una tabella badfile in Autonomous Database.

VALIDATE_EXTERNAL_PART_TABLE Procedura

Questa procedura convalida i file di origine per una tabella partizionata esterna, genera informazioni di log e memorizza le righe che non corrispondono alle opzioni di formato specificate per la tabella esterna in una tabella badfile in Autonomous Database.

VALIDATE_HYBRID_PART_TABLE Procedura

Questa procedura convalida i file di origine per una tabella con partizionamento ibrido, genera informazioni di log e memorizza le righe che non corrispondono alle opzioni di formato specificate per la tabella ibrida in una tabella badfile in Autonomous Database.

COPY_COLLECTION Procedura

Questa procedura carica i dati in una raccolta SODA dallo storage degli oggetti cloud o da una directory. Se la raccolta SODA specificata non esiste, viene creata dalla procedura. Il form sovraccarico consente di utilizzare il parametro operation_id.

Sintassi

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
);

Parametri

Parametro Descrizione

collection_name

Nome della raccolta SODA in cui verranno caricati i dati. Se una raccolta con questo nome esiste già, i dati specificati verranno caricati, altrimenti verrà creata una nuova raccolta.

credential_name

Il nome della credenziale per accedere allo storage degli oggetti cloud.

Questo parametro non viene utilizzato quando si specifica una directory con file_uri_list.

file_uri_list

Questo parametro specifica una lista delimitata da virgole degli URI dei file di origine oppure una o più directory e file di origine.

URI file di origine cloud

È possibile utilizzare caratteri jolly ed espressioni regolari nei nomi file negli URI dei file di origine cloud.

Le espressioni regolari possono essere utilizzate solo quando il parametro regexuri format è impostato su TRUE.

I caratteri "*" e "?" vengono considerati caratteri jolly quando il parametro regexuri è impostato su FALSE. Quando il parametro regexuri è impostato su TRUE, i caratteri "*" e "?" fanno parte del pattern di espressioni regolari specificato.

I pattern di espressioni regolari sono supportati solo per il nome file o il percorso della sottocartella negli URI e la corrispondenza del pattern è identica a quella eseguita dalla funzione REGEXP_LIKE.

Ad esempio:

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'

Il formato degli URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI di storage degli oggetti cloud.

Per ulteriori informazioni sulla condizione REGEXP_LIKE, vedere REGEXP_LIKE Condizione in Oracle Database 19c SQL Language Reference o Oracle Database 23ai SQL Language Reference.

Directory

È possibile specificare una directory e uno o più nomi di file oppure usare una lista separata da virgole di directory e nomi di file. Il formato per specificare una directory è:'MY_DIR:filename.ext'. Per impostazione predefinita, il nome directory MY_DIR è un oggetto di database e non fa distinzione tra maiuscole e minuscole. Per il nome del file viene fatta distinzione tra casi.

È possibile utilizzare caratteri jolly per specificare i nomi dei file in una directory. Il carattere "*" può essere utilizzato come carattere jolly per più caratteri, il carattere "?" può essere utilizzato come carattere jolly per un singolo carattere. Ad esempio:'MY_DIR:*" o 'MY_DIR:test?'

Per specificare più directory, utilizzare una lista separata da virgole di directory, ad esempio:'MY_DIR1:*, MY_DIR2:test?'

Utilizzare le virgolette doppie per specificare un nome di directory con distinzione tra maiuscole e minuscole. Ad esempio:'"my_dir1":*, "my_dir2":Test?'

Per includere una virgoletta, utilizzare due virgolette. Ad esempio:'MY_DIR:''filename.ext'. Specifica che filename inizia con una virgoletta (').

format

Opzioni che descrivono il formato dei file di origine. Queste opzioni sono specificate come stringa JSON.

I formati supportati sono: characterset, compression, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, unpackarray, keyassignment e keypath.

Oltre ai formati menzionati per i dati JSON, Autonomous Database supporta anche altri formati. Per la lista degli argomenti di formato supportati da Autonomous Database, vedere Parametro formato.

operation_id

Utilizzare questo parametro per tenere traccia dell'avanzamento e dello stato finale dell'operazione di caricamento come ID corrispondente nella vista USER_LOAD_OPERATIONS.

Esempio

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;
/

COPY_DATA Procedura

Questa procedura carica i dati nelle tabelle Autonomous Database esistenti da file nel cloud o da file in una directory. Il form sovraccarico consente di utilizzare il parametro operation_id.

Sintassi

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);

Parametri

Parametro Descrizione

table_name

Nome della tabella di destinazione nel database. Prima di eseguire COPY_DATA, è necessario creare la tabella di destinazione.

credential_name

Il nome della credenziale per accedere allo storage degli oggetti cloud.

Questo parametro non viene utilizzato quando si specifica una directory con file_uri_list.

file_uri_list

È possibile utilizzare caratteri jolly ed espressioni regolari nei nomi file negli URI dei file di origine cloud.

URI file di origine cloud

Questo parametro specifica una lista delimitata da virgole degli URI dei file di origine oppure una o più directory e file di origine.

Le espressioni regolari possono essere utilizzate solo quando il parametro regexuri format è impostato su TRUE.

I caratteri "*" e "?" vengono considerati caratteri jolly quando il parametro regexuri è impostato su FALSE. Quando il parametro regexuri è impostato su TRUE, i caratteri "*" e "?" fanno parte del pattern di espressioni regolari specificato.

I pattern di espressioni regolari sono supportati solo per il nome file o il percorso della sottocartella negli URI e la corrispondenza del pattern è identica a quella eseguita dalla funzione REGEXP_LIKE.

Ad esempio:

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'

Il formato degli URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI di storage degli oggetti cloud.

Per ulteriori informazioni sulla condizione REGEXP_LIKE, vedere REGEXP_LIKE Condizione in Oracle Database 19c SQL Language Reference o Oracle Database 23ai SQL Language Reference.

Directory

È possibile specificare una directory e uno o più nomi di file oppure usare una lista separata da virgole di directory e nomi di file. Il formato per specificare una directory è:'MY_DIR:filename.ext'. Per impostazione predefinita, il nome directory MY_DIR è un oggetto di database e non fa distinzione tra maiuscole e minuscole. Per il nome del file viene fatta distinzione tra casi.

È possibile utilizzare caratteri jolly per specificare i nomi dei file in una directory. Il carattere "*" può essere utilizzato come carattere jolly per più caratteri, il carattere "?" può essere utilizzato come carattere jolly per un singolo carattere. Ad esempio:'MY_DIR:*" o 'MY_DIR:test?'

Per specificare più directory, utilizzare una lista separata da virgole di directory, ad esempio:'MY_DIR1:*, MY_DIR2:test?'

Utilizzare le virgolette doppie per specificare un nome di directory con distinzione tra maiuscole e minuscole. Ad esempio:'"my_dir1":*, "my_dir2":Test?'

Per includere una virgoletta, utilizzare due virgolette. Ad esempio:'MY_DIR:''filename.ext'. Specifica che filename inizia con una virgoletta (').

schema_name

Nome dello schema in cui risiede la tabella di destinazione. Il valore predefinito è NULL, ovvero la tabella di destinazione si trova nello stesso schema dell'utente che esegue la procedura.

field_list

Identifica i campi nei file di origine e i relativi tipi di dati. Il valore predefinito è NULL, ovvero i campi e i relativi tipi di dati sono determinati dal parametro column_list. La sintassi di questo argomento è la stessa della clausola field_list nelle normali tabelle esterne Oracle. Per ulteriori informazioni, visita il sito Web all'indirizzo field_list in Oracle Database 19c Utilities o Oracle Database 23ai Utilities.

Quando il valore dell'opzione type del parametro format è json, questo parametro viene ignorato.

Per un esempio che utilizza field_list, vedere Procedura CREATE_EXTERNAL_TABLE.

format

Opzioni che descrivono il formato dei file di origine, di log e non validi. Per l'elenco delle opzioni e come specificare i valori, vedere Parametro formato.

Per le opzioni di formato file Avro, ORC o Parquet, vedere DBMS_CLOUD Opzioni di formato package per Avro, ORC o Parquet.

operation_id

Utilizzare questo parametro per tenere traccia dell'avanzamento e dello stato finale dell'operazione di caricamento come ID corrispondente nella vista USER_LOAD_OPERATIONS.

Nota per l'uso

Il delimitatore di record predefinito è detected newline. Con detected newline, DBMS_CLOUD tenta di trovare automaticamente il carattere di nuova riga corretto da utilizzare come delimitatore di record. DBMS_CLOUD cerca innanzitutto il carattere di nuova riga di Windows \r\n. Se trova il carattere di nuova riga di Windows, viene utilizzato come delimitatore di record per tutti i file della procedura. Se un carattere di nuova riga di Windows non viene trovato, DBMS_CLOUD cerca il carattere di nuova riga UNIX/Linux \n e, se ne trova uno, utilizza \n come delimitatore di record per tutti i file della procedura. Se i file di origine utilizzano una combinazione di diversi delimitatori di record, potrebbe verificarsi un errore, ad esempio "KUP-04020: found record longer than buffer size supported". In questo caso, è necessario modificare i file di origine per utilizzare lo stesso delimitatore di record oppure specificare solo i file di origine che utilizzano lo stesso delimitatore di record.

Per informazioni sull'opzione di formato recorddelmiter, vedere Parametro formato.

Esempi

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;
/

COPY_DATA Procedura per i file Avro, ORC o Parquet

Questa procedura con il parametro format type impostato sul valore avro, orc o parquet carica i dati nelle tabelle Autonomous Database esistenti dai file Avro, ORC o Parquet nel cloud o dai file in una directory.

Analogamente ai file di testo, i dati vengono copiati dal file di origine Avro, ORC o Parquet nella tabella interna preesistente.

Sintassi

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);

Parametri

Parametro Descrizione

table_name

Nome della tabella di destinazione nel database. Prima di eseguire COPY_DATA, è necessario creare la tabella di destinazione.

credential_name

Il nome della credenziale per accedere allo storage degli oggetti cloud.

Questo parametro non viene utilizzato quando si specifica una directory con file_uri_list.

file_uri_list

Questo parametro specifica una lista delimitata da virgole degli URI dei file di origine oppure una o più directory e file di origine.

URI file di origine cloud

È possibile utilizzare caratteri jolly ed espressioni regolari nei nomi file negli URI dei file di origine cloud.

Le espressioni regolari possono essere utilizzate solo quando il parametro regexuri format è impostato su TRUE.

I caratteri "*" e "?" vengono considerati caratteri jolly quando il parametro regexuri è impostato su FALSE. Quando il parametro regexuri è impostato su TRUE, i caratteri "*" e "?" fanno parte del pattern di espressioni regolari specificato.

I pattern di espressioni regolari sono supportati solo per il nome file o il percorso della sottocartella negli URI e la corrispondenza del pattern è identica a quella eseguita dalla funzione REGEXP_LIKE.

Ad esempio:

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'

Il formato degli URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI di storage degli oggetti cloud.

Per ulteriori informazioni sulla condizione REGEXP_LIKE, vedere REGEXP_LIKE Condizione in Oracle Database 19c SQL Language Reference o Oracle Database 23ai SQL Language Reference.

Directory

È possibile specificare una directory e uno o più nomi di file oppure usare una lista separata da virgole di directory e nomi di file. Il formato per specificare una directory è:'MY_DIR:filename.ext'. Per impostazione predefinita, il nome directory MY_DIR è un oggetto di database e non fa distinzione tra maiuscole e minuscole. Per il nome del file viene fatta distinzione tra casi.

È possibile utilizzare caratteri jolly per specificare i nomi dei file in una directory. Il carattere "*" può essere utilizzato come carattere jolly per più caratteri, il carattere "?" può essere utilizzato come carattere jolly per un singolo carattere. Ad esempio:'MY_DIR:*" o 'MY_DIR:test?'

Per specificare più directory, utilizzare una lista separata da virgole di directory, ad esempio:'MY_DIR1:*, MY_DIR2:test?'

Utilizzare le virgolette doppie per specificare un nome di directory con distinzione tra maiuscole e minuscole. Ad esempio:'"my_dir1":*, "my_dir2":Test?'

Per includere una virgoletta, utilizzare due virgolette. Ad esempio:'MY_DIR:''filename.ext'. Specifica che filename inizia con una virgoletta (').

schema_name

Nome dello schema in cui risiede la tabella di destinazione. Il valore predefinito è NULL, ovvero la tabella di destinazione si trova nello stesso schema dell'utente che esegue la procedura.

field_list

Ignorato per i file Avro, ORC o Parquet.

I campi nell'origine corrispondono alle colonne della tabella esterna per nome. I tipi di dati di origine vengono convertiti nel tipo di dati della colonna della tabella esterna.

Per i file ORC, vedere DBMS_CLOUD Package ORC to Oracle Data Type Mapping.

Per i file Parquet, vedere DBMS_CLOUD Parquet di package per Oracle Data Type Mapping per dettagli sul mapping.

Per i file Avro, vedere DBMS_CLOUD Package Avro to Oracle Data Type Mapping per i dettagli sul mapping.

format

Opzioni che descrivono il formato dei file di origine. Per i file Avro, ORC o Parquet, sono supportate solo due opzioni: vedere DBMS_CLOUD Opzioni formato package per Avro, ORC o Parquet.

Note sull'uso

  • Come per altri file di dati, i caricamenti dei dati di Avro, ORC e Parquet generano log visualizzabili nelle tabelle dba_load_operations e user_load_operations. Ogni operazione di caricamento aggiunge un record a dba[utente]_load_operations che indica la tabella contenente i log.

    La tabella di log fornisce informazioni di riepilogo sul caricamento.

  • Per Avro, ORC o Parquet, quando il parametro format type è impostato sul valore avro, orc o parquet, la tabella BADFILE_TABLE è sempre vuota.

    • Per i file Parquet, gli errori di vincolo PRIMARY KEY restituiscono un errore ORA.

    • Se i dati di una colonna riscontrano un errore di conversione, ad esempio la colonna di destinazione non è sufficientemente grande da contenere il valore convertito, il valore della colonna viene impostato su NULL. Questo non produce un record rifiutato.

COPY_OBJECT Procedura

Questa procedura copia un oggetto da un bucket o una cartella dello storage degli oggetti cloud a un altro.

Il bucket o la cartella di origine e destinazione possono trovarsi nello stesso provider dell'area di memorizzazione degli oggetti cloud o in un altro provider.

Quando l'origine e la destinazione si trovano in aree di memorizzazione degli oggetti distinte o hanno account diversi con lo stesso provider cloud, è possibile assegnare nomi di credenziali separati per le posizioni di origine e destinazione.

Il nome della credenziale di origine viene utilizzato per impostazione predefinita anche dalla posizione di destinazione quando non viene fornito il nome della credenziale di destinazione.

Sintassi

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
);

Parametri

Parametro Descrizione

source_credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud di origine.

Se non si specifica un valore source_credential_name, credential_name viene impostato su NULL.

source_object_uri

Specifica l'URI che punta al bucket di storage degli oggetti o alla posizione della cartella di origine.

Questo parametro è obbligatorio.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere Formati URI di storage degli oggetti cloud.

target_object_uri

Specifica l'URI per l'area di memorizzazione degli oggetti di destinazione.

Questo parametro è obbligatorio.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere Formati URI di storage degli oggetti cloud.

target_credential_name

Nome della credenziale per accedere alla posizione di storage degli oggetti cloud di destinazione.

Se non si specifica un valore target_credential_name, il valore target_object_uri viene impostato sul valore source_credential_name.

Esempio

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;
/

CREATE_EXTERNAL_PART_TABLE Procedura

Questa procedura crea una tabella partizionata esterna su file nel cloud o da file in una directory. Ciò consente di eseguire query su dati esterni da Autonomous Database.

Sintassi

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);

Parametri

Parametro Descrizione

table_name

Il nome della tabella esterna.

credential_name

Il nome della credenziale per accedere allo storage degli oggetti cloud.

partitioning_clause

Specifica la clausola di partizionamento completa, incluse le informazioni sulla posizione per le singole partizioni.

Se si utilizza il parametro partitioning_clause, il parametro file_uri_list non è consentito.

file_uri_list

Questo parametro specifica una lista delimitata da virgole degli URI dei file di origine oppure una o più directory e file di origine.

URI file di origine cloud

È possibile utilizzare caratteri jolly ed espressioni regolari nei nomi file negli URI dei file di origine cloud.

Le espressioni regolari possono essere utilizzate solo quando il parametro regexuri format è impostato su TRUE.

I caratteri "*" e "?" vengono considerati caratteri jolly quando il parametro regexuri è impostato su FALSE. Quando il parametro regexuri è impostato su TRUE, i caratteri "*" e "?" fanno parte del pattern di espressioni regolari specificato.

I pattern di espressioni regolari sono supportati solo per il nome file o il percorso della sottocartella negli URI e la corrispondenza del pattern è identica a quella eseguita dalla funzione REGEXP_LIKE.

Questa opzione è supportata solo con tabelle esterne create su un file nello storage degli oggetti.

Ad esempio:

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 si utilizza il parametro file_uri_list, il parametro partitioning_clause non è consentito.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere Formati URI di storage degli oggetti cloud.

Per ulteriori informazioni sulla condizione REGEXP_LIKE, vedere REGEXP_LIKE Condizione in Oracle Database 19c SQL Language Reference o Oracle Database 23ai SQL Language Reference.

column_list

Lista delimitata da virgole di nomi di colonna e tipi di dati per la tabella esterna. Questo parametro prevede i seguenti requisiti, a seconda del tipo di file di dati specificato con il parametro file_uri_list:

  • Il parametro column_list è obbligatorio con file non strutturati. Utilizzando file non strutturati, ad esempio con file di testo CSV, il parametro column_list deve specificare tutti i nomi di colonna e i tipi di dati all'interno del file di dati, nonché le colonne di partizione derivate dal nome dell'oggetto.

  • Il parametro column_list è facoltativo con i file strutturati. Ad esempio, con i file di dati Avro, ORC o Parquet, column_list non è obbligatorio. Quando l'opzione column_list non è inclusa, l'opzione partition_columns del parametro format deve includere specifiche sia per i nomi di colonna (name) che per i tipi di dati (type).

field_list

Identifica i campi nei file di origine e i relativi tipi di dati. Il valore predefinito è NULL, ovvero i campi e i relativi tipi di dati sono determinati dal parametro column_list. La sintassi di questo argomento è la stessa della clausola field_list nelle normali tabelle esterne Oracle. Per ulteriori informazioni, visita il sito Web all'indirizzo field_list in Oracle Database 19c Utilities o Oracle Database 23ai Utilities.

format

L'opzione di formato partition_columns specifica i nomi di colonna DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE e i tipi di dati delle colonne di partizione quando le colonne di partizione vengono derivate dal percorso del file, a seconda del tipo di file di dati, strutturato o non strutturato:

  • Se DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE include il parametro column_list e i file di dati non sono strutturati, ad esempio con i file di testo CSV, partition_columns non include il tipo di dati. Ad esempio, utilizzare un formato come il seguente per questo tipo di specifica partition_columns:

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

    Il tipo di dati non è obbligatorio perché è specificato nel parametro column_list DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE.

  • Se DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE non include il parametro column_list e i file di dati sono strutturati, ad esempio i file Avro, ORC o Parquet, l'opzione partition_columns include sia il nome della colonna, la sottoclausola name che il tipo di dati, la sottoclausola type. Ad esempio, la seguente mostra una specifica partition_columns:

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

Se i file di dati non sono strutturati e la sottoclausola type è specificata con partition_columns, la sottoclausola type viene ignorata.

Per i nomi oggetto non basati sul formato hive, l'ordine delle colonne specificate in partition_columns deve corrispondere all'ordine visualizzato nel nome oggetto nel percorso file specificato nel parametro file_uri_list.

Per visualizzare tutte le opzioni dei parametri format che descrivono il formato dei file di origine, vedere Formati URI di storage degli oggetti cloud.

Note sull'uso

  • Non è possibile richiamare questa procedura con i parametri partitioning_clause e file_uri_list.

  • La specifica del parametro column_list è facoltativa con i file di dati strutturati, inclusi i file di dati Avro, Parquet o ORC. Se column_list non viene specificato, l'opzione partition_columns del parametro format deve includere sia name che type.

  • Il parametro column_list è obbligatorio con file di dati non strutturati, ad esempio file di testo CSV.

  • La procedura DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE supporta i file partizionati esterni nei servizi di storage degli oggetti cloud supportati, tra cui:
    • Oracle Cloud Infrastructure Object Storage

    • Azure Blob Storage

    Per ulteriori informazioni, vedere Formati URI di storage degli oggetti cloud.

  • La procedura DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE supporta file partizionati esterni nelle directory (file system locale o di rete).

  • Quando si chiama DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE con il parametro file_uri_list, i tipi di colonne specificati nel nome file dell'area di memorizzazione degli oggetti cloud devono essere uno dei seguenti tipi:

    VARCHAR2(n)
    NUMBER(n)
    NUMBER(p,s)
    NUMBER
    DATE
    TIMESTAMP(9)
  • Il delimitatore di record predefinito è detected newline. Con detected newline, DBMS_CLOUD tenta di trovare automaticamente il carattere di nuova riga corretto da utilizzare come delimitatore di record. DBMS_CLOUD cerca innanzitutto il carattere di nuova riga di Windows \r\n. Se trova il carattere di nuova riga di Windows, viene utilizzato come delimitatore di record per tutti i file della procedura. Se un carattere di nuova riga di Windows non viene trovato, DBMS_CLOUD cerca il carattere di nuova riga UNIX/Linux \n e, se ne trova uno, utilizza \n come delimitatore di record per tutti i file della procedura. Se i file di origine utilizzano una combinazione di diversi delimitatori di record, potrebbe verificarsi un errore, ad esempio "KUP-04020: found record longer than buffer size supported". In questo caso, è necessario modificare i file di origine per utilizzare lo stesso delimitatore di record oppure specificare solo i file di origine che utilizzano lo stesso delimitatore di record.

    Per informazioni sull'opzione di formato recorddelmiter, vedere Formati URI di storage degli oggetti cloud.

  • Le tabelle partizionate esterne create con DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE includono due colonne invisibili file$path e file$name. Queste colonne consentono di identificare il file da cui proviene un record.

    • file$path: specifica il testo del percorso del file fino all'inizio del nome dell'oggetto.

    • file$name: specifica il nome dell'oggetto, incluso tutto il testo che segue il nome del bucket.

Esempi

Esempio di utilizzo del parametro 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;                     
/

Esempio di utilizzo dei parametri file_uri_list e column_list con file di dati non strutturati:

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;
/ 

Esempio di utilizzo del parametro file_uri_list senza il parametro column_list con file di dati strutturati:

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;
/

CREATE_EXTERNAL_TABLE Procedura

Questa procedura crea una tabella esterna sui file nel cloud o dai file di una directory. Ciò consente di eseguire query su dati esterni da Autonomous Database.

Sintassi

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);

Parametri

Parametro Descrizione

table_name

Il nome della tabella esterna.

credential_name

Il nome della credenziale per accedere allo storage degli oggetti cloud.

Questo parametro non viene utilizzato quando si specifica una directory o un URL di collegamento ipertestuale tabella con file_uri_list.

file_uri_list

Questo parametro specifica una lista delimitata da virgole degli URI dei file di origine oppure una o più directory e file di origine.

URI file di origine cloud

È possibile utilizzare caratteri jolly ed espressioni regolari nei nomi file negli URI dei file di origine cloud.

Le espressioni regolari possono essere utilizzate solo quando il parametro regexuri format è impostato su TRUE.

I caratteri "*" e "?" vengono considerati caratteri jolly quando il parametro regexuri è impostato su FALSE. Quando il parametro regexuri è impostato su TRUE, i caratteri "*" e "?" fanno parte del pattern di espressioni regolari specificato.

I pattern di espressioni regolari sono supportati solo per il nome file o il percorso della sottocartella negli URI e la corrispondenza del pattern è identica a quella eseguita dalla funzione REGEXP_LIKE.

Questa opzione è supportata solo con tabelle esterne create su un file nello storage degli oggetti.

Ad esempio:

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'

Il formato degli URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI di storage degli oggetti cloud.

Per ulteriori informazioni sulla condizione REGEXP_LIKE, vedere REGEXP_LIKE Condizione in Oracle Database 19c SQL Language Reference o Oracle Database 23ai SQL Language Reference.

Directory

È possibile specificare una directory e uno o più nomi di file oppure usare una lista separata da virgole di directory e nomi di file. Il formato per specificare una directory è:'MY_DIR:filename.ext'. Per impostazione predefinita, il nome directory MY_DIR è un oggetto di database e non fa distinzione tra maiuscole e minuscole. Per il nome del file viene fatta distinzione tra casi.

È possibile utilizzare caratteri jolly per specificare i nomi dei file in una directory. Il carattere "*" può essere utilizzato come carattere jolly per più caratteri, il carattere "?" può essere utilizzato come carattere jolly per un singolo carattere. Ad esempio:'MY_DIR:*" o 'MY_DIR:test?'

Per specificare più directory, utilizzare una lista separata da virgole di directory, ad esempio:'MY_DIR1:*, MY_DIR2:test?'

Utilizzare le virgolette doppie per specificare un nome di directory con distinzione tra maiuscole e minuscole. Ad esempio:'"my_dir1":*, "my_dir2":Test?'

Per includere una virgoletta, utilizzare due virgolette. Ad esempio:'MY_DIR:''filename.ext'. Specifica che filename inizia con una virgoletta (').

column_list

Lista delimitata da virgole di nomi di colonna e tipi di dati per la tabella esterna.

field_list

Identifica i campi nei file di origine e i relativi tipi di dati. Il valore predefinito è NULL, ovvero i campi e i relativi tipi di dati sono determinati dal parametro column_list. La sintassi di questo argomento è la stessa della clausola field_list nelle normali tabelle esterne di Oracle Database. Per ulteriori informazioni su field_list, vedere ORACLE_LOADER Access Driver field_list sotto la clausola field_definitions in Oracle Database 19c Utilities o Oracle Database 23ai Utilities.

format

Opzioni che descrivono il formato dei file di origine. Per l'elenco delle opzioni e come specificare i valori, vedere Parametro formato.

Per i file di formato Avro, ORC o Parquet, vedere CREATE_EXTERNAL_TABLE Procedura per i file Avro, ORC o Parquet.

Note sull'uso

  • La procedura DBMS_CLOUD.CREATE_EXTERNAL_TABLE supporta i file partizionati esterni nei servizi di storage degli oggetti cloud supportati, tra cui Azure Blob Storage.

    La credenziale è una proprietà a livello di tabella, pertanto i file esterni devono trovarsi nella stessa area di memorizzazione degli oggetti.

    Per ulteriori informazioni, vedere Formati URI di storage degli oggetti cloud.

  • Il delimitatore di record predefinito è detected newline. Con detected newline, DBMS_CLOUD tenta di trovare automaticamente il carattere di nuova riga corretto da utilizzare come delimitatore di record. DBMS_CLOUD cerca innanzitutto il carattere di nuova riga di Windows \r\n. Se trova il carattere di nuova riga di Windows, viene utilizzato come delimitatore di record per tutti i file della procedura. Se un carattere di nuova riga di Windows non viene trovato, DBMS_CLOUD cerca il carattere di nuova riga UNIX/Linux \n e, se ne trova uno, utilizza \n come delimitatore di record per tutti i file della procedura. Se i file di origine utilizzano una combinazione di diversi delimitatori di record, potrebbe verificarsi un errore, ad esempio "KUP-04020: found record longer than buffer size supported". In questo caso, è necessario modificare i file di origine per utilizzare lo stesso delimitatore di record oppure specificare solo i file di origine che utilizzano lo stesso delimitatore di record.

    Per informazioni sull'opzione di formato recorddelimiter, vedere Parametro formato.

Esempio

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 Procedura per i file Avro, ORC o Parquet

Questa procedura con il parametro format type impostato sul valore avro, orc o parquet crea una tabella esterna con i file di formato Avro, ORC o Parquet nel cloud o in una directory.

Ciò consente di eseguire query su dati esterni da Autonomous Database.

Sintassi

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);

Parametri

Parametro Descrizione

table_name

Il nome della tabella esterna.

credential_name

Il nome della credenziale per accedere allo storage degli oggetti cloud.

Questo parametro non viene utilizzato quando si specifica una directory con file_uri_list.

file_uri_list

Questo parametro specifica una lista delimitata da virgole degli URI dei file di origine oppure una o più directory e file di origine.

URI file di origine cloud

È possibile utilizzare caratteri jolly ed espressioni regolari nei nomi file negli URI dei file di origine cloud.

Le espressioni regolari possono essere utilizzate solo quando il parametro regexuri format è impostato su TRUE.

I caratteri "*" e "?" vengono considerati caratteri jolly quando il parametro regexuri è impostato su FALSE. Quando il parametro regexuri è impostato su TRUE, i caratteri "*" e "?" fanno parte del pattern di espressioni regolari specificato.

I pattern di espressioni regolari sono supportati solo per il nome file o il percorso della sottocartella negli URI e la corrispondenza del pattern è identica a quella eseguita dalla funzione REGEXP_LIKE.

Questa opzione è supportata solo con tabelle esterne create su un file nello storage degli oggetti.

Ad esempio:

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'

Il formato degli URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI di storage degli oggetti cloud.

Per ulteriori informazioni sulla condizione REGEXP_LIKE, vedere REGEXP_LIKE Condizione in Oracle Database 19c SQL Language Reference o Oracle Database 23ai SQL Language Reference.

Directory

È possibile specificare una directory e uno o più nomi di file oppure usare una lista separata da virgole di directory e nomi di file. Il formato per specificare una directory è:'MY_DIR:filename.ext'. Per impostazione predefinita, il nome directory MY_DIR è un oggetto di database e non fa distinzione tra maiuscole e minuscole. Per il nome del file viene fatta distinzione tra casi.

È possibile utilizzare caratteri jolly per specificare i nomi dei file in una directory. Il carattere "*" può essere utilizzato come carattere jolly per più caratteri, il carattere "?" può essere utilizzato come carattere jolly per un singolo carattere. Ad esempio:'MY_DIR:*" o 'MY_DIR:test?'

Per specificare più directory, utilizzare una lista separata da virgole di directory, ad esempio:'MY_DIR1:*, MY_DIR2:test?'

Utilizzare le virgolette doppie per specificare un nome di directory con distinzione tra maiuscole e minuscole. Ad esempio:'"my_dir1":*, "my_dir2":Test?'

Per includere una virgoletta, utilizzare due virgolette. Ad esempio:'MY_DIR:''filename.ext'. Specifica che filename inizia con una virgoletta (').

column_list

(Facoltativo) Questo campo, se specificato, sostituisce il parametro format->schema che specifica che lo schema, le colonne e i tipi di dati vengono derivati automaticamente. Vedere il parametro del formato per i dettagli.

Quando si specifica column_list per l'origine Avro, ORC o Parquet, i nomi delle colonne devono corrispondere alle colonne trovate nel file. I tipi di dati Oracle devono essere mappati in modo appropriato ai tipi di dati Avro, ORC o Parquet.

Per i file Parquet, vedere DBMS_CLOUD Parquet di package per Oracle Data Type Mapping per i dettagli.

Per i file ORC, vedere DBMS_CLOUD Package ORC to Oracle Data Type Mapping per i dettagli.

Per i file Avro, vedere DBMS_CLOUD Package Avro to Oracle Data Type Mapping per i dettagli.

field_list

Ignorato per i file Avro, ORC o Parquet.

I campi nell'origine corrispondono alle colonne della tabella esterna per nome. I tipi di dati di origine vengono convertiti nel tipo di dati della colonna della tabella esterna.

Per i file ORC, vedere DBMS_CLOUD Package ORC to Oracle Data Type Mapping

Per i file Parquet, vedere DBMS_CLOUD Parquet di package per Oracle Data Type Mapping per i dettagli.

Per i file Avro, vedere DBMS_CLOUD Package Avro to Oracle Data Type Mapping per i dettagli.

format

Per i file di origine Avro, ORC o Parquet type, vedere DBMS_CLOUD Opzioni formato package per Avro, ORC o Parquet per i dettagli.

Esempi ORC

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

Esempi Avro

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

Esempi Parquet

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

Mapping dei nomi di colonna Avro, ORC o parquet ai nomi di colonna Oracle

Per informazioni sul mapping dei nomi di colonna e sull'uso della conversione dei nomi di colonna in Oracle SQL, vedere DBMS_CLOUD Package Avro, ORC e Parquet to Oracle Column Name Mapping.

CREATE_EXTERNAL_TEXT_INDEX Procedura

Questa procedura crea un indice di testo nei file di storage degli oggetti.

La procedura CREATE_EXTERNAL_TEXT_INDEX crea un indice di testo nei file di storage degli oggetti specificati nella posizione location_uri. L'indice viene aggiornato a intervalli regolari, per eventuali nuove aggiunte o eliminazioni effettuate con i file sull'URI della posizione.

Sintassi

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
);

Parametri

Parametro Descrizione

credential_name

Nome della credenziale per accedere alla posizione dello storage degli oggetti cloud. Per gli URI bucket pubblici, preautenticati o pre-firmati, è possibile specificare un valore NULL.

Se non si specifica un valore credential_name, il valore credential_name viene impostato su un valore NULL.

location_uri

Specifica il bucket dell'area di memorizzazione degli oggetti o l'URI della cartella.

Questo parametro è obbligatorio.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI di storage degli oggetti Package File Cloud.

index_name Specifica il nome dell'indice che si sta creando sui file situati nella posizione location_uri.

Questo parametro è obbligatorio.

format

Specifica opzioni di configurazione aggiuntive. Le opzioni sono specificate come stringa JSON.

Le opzioni di formato supportate sono:

refresh_rate: specifica la frequenza in minuti con cui viene aggiornato l'indice locale. I nuovi caricamenti e le nuove eliminazioni di file comportano un aggiornamento dell'indice. Il valore predefinito è 5 minuti.

binary_files: specifica se il contenuto dei file da indicizzare è binario. Ad esempio, PDF, MS-Word. Il valore predefinito è FALSE.

stop_words: specifica una lista di stopword che è possibile fornire quando si creano gli indici.

Il valore stop_words indica se si tratta di una lista di stopword o di una tabella di stopword. Quando viene fornito un array JSON, il parametro delle stopword viene considerato come un elenco, altrimenti il parametro delle stopword viene considerato come un nome di tabella la cui colonna "STOP_WORDS" viene utilizzata per leggere nell'elenco delle stopword.

È possibile specificare le stopword utilizzando i metodi riportati di seguito.

  • Array JSON: ad esempio: format := '{"stop_words":["king","queen"]}'
  • Nome tabella stop word: ad esempio: format := '{"stop_words":"STOP_WORDS_TABLE"}'

Se il parametro format non viene fornito, il valore format viene impostato su NULL.

Esempio

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;
/

CREATE_HYBRID_PART_TABLE Procedura

Questa procedura crea una tabella partizionata ibrida. Ciò consente di eseguire query su dati ibridi partizionati da Autonomous Database utilizzando oggetti e file di database nel cloud oppure oggetti e file di database in una directory.

Sintassi

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);

Parametri

Parametro Descrizione

table_name

Il nome della tabella esterna.

credential_name

Il nome della credenziale per accedere allo storage degli oggetti cloud.

partitioning_clause

Specifica la clausola di partizionamento completa, incluse le informazioni sulla posizione per le singole partizioni.

Per utilizzare le directory, la clausola di partizionamento supporta i valori LOCATION e DEFAULT DIRECTORY.

È possibile utilizzare caratteri jolly ed espressioni regolari nei nomi file negli URI dei file di origine cloud.

Le espressioni regolari possono essere utilizzate solo quando il parametro regexuri format è impostato su TRUE.

I caratteri "*" e "?" vengono considerati caratteri jolly quando il parametro regexuri è impostato su FALSE. Quando il parametro regexuri è impostato su TRUE, i caratteri "*" e "?" fanno parte del pattern di espressioni regolari specificato.

I pattern di espressioni regolari sono supportati solo per il nome file o il percorso della sottocartella negli URI e la corrispondenza del pattern è identica a quella eseguita dalla funzione REGEXP_LIKE. I pattern di espressione regolare non sono supportati per i nomi di directory.

Ad esempio:

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''),….

Per ulteriori informazioni sulla condizione REGEXP_LIKE, vedere REGEXP_LIKE Condizione in Oracle Database 19c SQL Language Reference o Oracle Database 23ai SQL Language Reference.

column_list

Lista delimitata da virgole di nomi di colonna e tipi di dati per la tabella esterna.

field_list

Identifica i campi nei file di origine e i relativi tipi di dati. Il valore predefinito è NULL, ovvero i campi e i relativi tipi di dati sono determinati dal parametro column_list. La sintassi di questo argomento è la stessa della clausola field_list nelle normali tabelle esterne Oracle. Per ulteriori informazioni, visita il sito Web all'indirizzo field_list in Oracle Database 19c Utilities o Oracle Database 23ai Utilities.

format

Opzioni che descrivono il formato dei file di origine. Per l'elenco delle opzioni e come specificare i valori, vedere Parametro formato.

Note sull'uso

  • La procedura DBMS_CLOUD.CREATE_HYBRID_PART_TABLE supporta i file partizionati esterni nei servizi di storage degli oggetti cloud supportati, tra cui Azure Blob Storage.

    La credenziale è una proprietà a livello di tabella, pertanto i file esterni devono trovarsi nella stessa area di memorizzazione degli oggetti.

    Per ulteriori informazioni, vedere Formati URI di storage degli oggetti cloud.

  • La procedura DBMS_CLOUD.CREATE_HYBRID_PART_TABLE supporta i file di partizionamento ibridi contenuti nelle directory, sia in un file system locale che in un file system di rete.

  • Le tabelle partizionate esterne create con DBMS_CLOUD.CREATE_HYBRID_PART_TABLE includono due colonne invisibili file$path e file$name. Queste colonne consentono di identificare il file da cui proviene un record.

    • file$path: specifica il testo del percorso del file fino all'inizio del nome dell'oggetto.

    • file$name: specifica il nome dell'oggetto, incluso tutto il testo che segue il nome del bucket.

Esempi

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;
/

DELETE_ALL_OPERATIONS Procedura

Questa procedura cancella tutte le operazioni di caricamento dati registrate nella tabella user_load_operations nello schema oppure cancella tutte le operazioni di caricamento dati del tipo specificato, come indicato con il parametro type.

Sintassi

DBMS_CLOUD.DELETE_ALL_OPERATIONS (
	type      IN VARCHAR DEFAULT NULL);

Parametri

Parametro Descrizione

type

Specifica il tipo di operazione da eliminare. I valori dei tipi sono disponibili nella colonna TYPE della tabella user_load_operations.

Se non viene specificato alcun valore type, vengono eliminate tutte le righe.

Nota per l'uso

  • DBMS_CLOUD.DELETE_ALL_OPERATIONS non elimina le operazioni attualmente in esecuzione (operazioni con stato "In esecuzione").

DELETE_FILE Procedura

Questa procedura rimuove il file specificato dalla directory specificata in Autonomous Database.

Sintassi

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

Parametri

Parametro Descrizione

directory_name

Nome della directory nell'istanza di Autonomous Database.

file_name

Il nome del file da rimuovere.

force

Ignora e non segnala errori se il file non esiste. I valori validi sono TRUE e FALSE. Il valore predefinito è FALSE.

Nota

Per eseguire DBMS_CLOUD.DELETE_FILE con un utente diverso da ADMIN, è necessario concedere privilegi di scrittura sulla directory che contiene il file a tale utente.Ad esempio, eseguire il comando seguente come ADMIN per concedere i privilegi di scrittura a atpc_user:
GRANT WRITE ON DIRECTORY data_pump_dir TO atpc_user;

Esempio

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

DELETE_OBJECT Procedura

Questa procedura elimina l'oggetto specificato nell'area di memorizzazione degli oggetti.

Sintassi

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

Parametri

Parametro Descrizione

credential_name

Il nome della credenziale per accedere allo storage degli oggetti cloud.

object_uri

URI dell'oggetto o del file per l'oggetto da eliminare. Il formato dell'URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI di storage degli oggetti cloud.

force

Ignora e non segnala errori se l'oggetto non esiste. I valori validi sono TRUE e FALSE. Il valore predefinito è FALSE.

Esempio

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;
/ 

DELETE_OPERATION Procedura

Questa procedura cancella le voci di caricamento dati per l'ID operazione specificato registrato nelle tabelle user_load_operations o dba_load_operations dello schema.

Sintassi

DBMS_CLOUD.DELETE_OPERATION (
	id      IN NUMBER);

Parametri

Parametro Descrizione

id

Specifica l'ID operazione associato alle voci del file di log che si desidera eliminare.

Esempio

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

DROP_EXTERNAL_TEXT_INDEX Procedura

Questa procedura elimina l'indice di testo nei file dello storage degli oggetti.

La procedura DROP_EXTERNAL_TEXT_INDEX elimina l'indice specificato creato con la procedura CREATE_EXTERNAL_TEXT_INDEX.

Sintassi

DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
      index_name       IN  VARCHAR2,
);

Parametri

Parametro Descrizione
index_name

Specifica il nome dell'indice che si sta rilasciando.

Il nome dell'indice deve corrispondere al nome fornito al momento della creazione dell'indice.

Questo parametro è obbligatorio.

Esempio

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

EXPORT_DATA Procedura

Questa procedura consente di esportare i dati da Autonomous Database in base al risultato di una query. Questa procedura è sovraccarica e supporta la scrittura di file nel cloud o in una directory.

In base al parametro format type, la procedura esporta i file nel cloud o in una posizione di directory come file di testo in formato CSV, JSON, Parquet o XML.

Sintassi

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);

Parametri

Parametro Descrizione

credential_name

Il nome della credenziale per accedere allo storage degli oggetti cloud.

Quando il parametro delle credenziali non è incluso, specifica l'output in una directory.

file_uri_list

Esistono moduli diversi, a seconda del valore del parametro del formato e a seconda che si includa o meno un parametro della credenziale:
  • Quando il valore del parametro format type è json: il file JSON nell'area di memorizzazione degli oggetti o nella posizione della directory specificata viene salvato con un nome file generato in base al valore del parametro file_uri_list. Per ulteriori informazioni, vedere Denominazione dei file per l'output di testo (CSV, JSON, Parquet o XML).

  • Quando il valore del parametro format type è datapump, file_uri_list è una lista delimitata da virgole dei file di dump. Specifica i file da creare nell'area di memorizzazione degli oggetti. L'uso dei caratteri jolly e di sostituzione non è supportato nel file file_uri_list.

  • Quando il parametro credential_name non viene specificato, fornire un nome di directory in file_uri_list.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI di storage degli oggetti cloud.

format

Stringa JSON che fornisce le opzioni di formato di esportazione.

L'opzione supportata è:

  • type: l'opzione type format è obbligatoria e deve avere uno dei valori seguenti: csv | datapump | json | parquet | xml.

Vedere DBMS_CLOUD Opzioni formato pacchetto per EXPORT_DATA.

query

Utilizzare questo parametro per specificare un'istruzione SELECT in modo che vengano esportati solo i dati richiesti. La query determina il contenuto dei file esportati come file di testo CSV, JSON, Parquet o XML o come file di dump. Ad esempio:

SELECT warehouse_id, quantity FROM inventories

Quando il valore format type è json, ogni risultato della query viene controllato e se non è JSON, come determinato con la funzione: JSON_OBJECT_T.parse(), DBMS_CLOUD.EXPORT_DATA trasforma la query in modo da includere la funzione JSON_OBJECT per convertire la riga in JSON. Per ulteriori informazioni, vedere JSON_OBJECT in Oracle Database 19c SQL Language Reference o Oracle Database 23ai SQL Language Reference e JSON_OBJECT_T Object Type in Oracle Database 19c PL/SQL Packages and Types Reference o Oracle Database 23ai PL/SQL Packages and Types Reference.

Ad esempio:

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

operation_id

Utilizzare questo parametro per tenere traccia dell'avanzamento e dello stato finale dell'operazione di esportazione come ID corrispondente nella vista USER_LOAD_OPERATIONS.

Note per l'uso

  • Il valore del parametro query fornito può essere una query avanzata, se necessario, ad esempio una query che include join o subquery.

  • A seconda del parametro di formato specificato, DBMS_CLOUD.EXPORT_DATA restituisce i risultati della query specificata nell'area di memorizzazione degli oggetti cloud o in una posizione di directory nei formati file CSV, JSON, Parquet o XML.

    Per ulteriori informazioni sull'utilizzo di DBMS_CLOUD.EXPORT_DATA con file di output CSV, JSON, Parquet o XML, vedere Esporta dati nell'area di memorizzazione degli oggetti come testo utilizzando DBMS_CLOUD.EXPORT_DATA ed Esporta dati in una directory utilizzando DBMS_CLOUD.EXPORT_DATA.

  • Per l'output CSV, JSON o XML, per impostazione predefinita quando un file generato contiene 10 MB di dati, viene creato un nuovo file di output. Tuttavia, se hai meno di 10 MB di dati dei risultati, potresti avere più file di output, a seconda del servizio di database e del numero di ECPU (OCPU se il tuo database utilizza le OCPU) per l'istanza di Autonomous Database.

    Per ulteriori informazioni, vedere Denominazione dei file per l'output di testo (CSV, JSON, Parquet o XML).

    La dimensione predefinita del chunk del file di output è 10 MB per CSV, JSON o XML. È possibile modificare questo valore con l'opzione maxfilesize del parametro format. Per ulteriori informazioni, vedere DBMS_CLOUD Opzioni formato pacchetto per EXPORT_DATA.

  • Per l'output Parquet, ogni file generato è inferiore a 128 MB ed è possibile generare più file di output. Tuttavia, se hai meno di 128 MB di dati dei risultati, potresti avere più file di output a seconda del servizio di database e del numero di ECPU (OCPU se il tuo database utilizza OCPU) per l'istanza di Autonomous Database.

    Per ulteriori informazioni, vedere Denominazione dei file per l'output di testo (CSV, JSON, Parquet o XML).

  • Il formato di output del parquet può essere utilizzato solo con servizi di database di medie e alte dimensioni per gli Autonomous Database sull'infrastruttura Exadata dedicata.

Note di utilizzo per DBMS_CLOUD.EXPORT_DATA con output in una directory

  • La directory fornita deve esistere ed è necessario eseguire il login come utente ADMIN o disporre dell'accesso WRITE alla directory.

  • DBMS_CLOUD.EXPORT_DATA non crea directory.

  • La procedura non sovrascrive i file. Ad esempio, se esiste un file di dump in file_uri_list, DBMS_CLOUD.EXPORT_DATA segnala un errore simile al seguente:

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

Esempi

L'esempio seguente mostra DBMS_CLOUD.EXPORT_DATA con il parametro formato type con il valore 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;
/  

L'esempio seguente mostra DBMS_CLOUD.EXPORT_DATA con il parametro formato type con il valore 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;
/

L'esempio seguente mostra DBMS_CLOUD.EXPORT_DATA con il parametro formato type con il valore 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;
/  

GET_OBJECT Procedura e funzione

Questa procedura è sovraccaricata. Il form della procedura legge un oggetto dallo storage degli oggetti cloud e lo copia in Autonomous Database. Il form funzione legge un oggetto dallo storage degli oggetti cloud e restituisce un valore BLOB all'Autonomous Database.

Sintassi

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;

Parametri

Parametro Descrizione

credential_name

Il nome della credenziale per accedere allo storage degli oggetti cloud.

object_uri

URI oggetto o file. Il formato dell'URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI di storage degli oggetti cloud.

directory_name

Nome della directory nel database.

Piede 1

file_name

Specifica il nome del file da creare. Se il nome del file non viene specificato, il nome del file viene preso dopo l'ultima barra nel parametro object_uri. Per casi speciali, ad esempio quando il nome del file contiene barre, utilizzare il parametro file_name.

startoffset

L'offset, in byte, da cui inizia la lettura della procedura.

endoffset

L'offset, in byte, fino al punto in cui la procedura smette di leggere.

compression

Specifica la compressione utilizzata per memorizzare l'oggetto. Quando compression è impostato su ‘AUTO’, il file viene decompresso (il valore ‘AUTO’ implica che l'oggetto specificato con object_uri viene compresso con Gzip).

Nota a piè di pagina 1

Nota

Per eseguire DBMS_CLOUD.GET_OBJECT con un utente diverso da ADMIN, è necessario concedere i privilegi WRITE sulla directory a tale utente. Ad esempio, eseguire il comando seguente come ADMIN per concedere i privilegi di scrittura a atpc_user:

GRANT WRITE ON DIRECTORY data_pump_dir TO atpc_user;

Valori restituiti

Il form funzione viene letto dall'area di memorizzazione degli oggetti e DBMS_CLOUD.GET_OBJECT restituisce un valore BLOB.

Esempi

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;
/

Per leggere i dati dei caratteri da un file nell'area di memorizzazione degli oggetti:

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;

Per aggiungere un'immagine memorizzata nell'area di memorizzazione degli oggetti in un file BLOB nel database, procedere come segue.


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;
/

In questo esempio, namespace-string è lo spazio di nomi dello storage degli oggetti Oracle Cloud Infrastructure e bucketname è il nome del bucket. Per ulteriori informazioni, vedere Informazioni sugli spazi di nomi dello storage degli oggetti.

Funzione LIST_FILES

Questa funzione elenca i file nella directory specificata. I risultati includono i nomi dei file e metadati aggiuntivi relativi ai file, ad esempio la dimensione dei file in byte, l'indicatore orario di creazione e l'indicatore orario dell'ultima modifica.

Sintassi

DBMS_CLOUD.LIST_FILES (
	directory_name      IN VARCHAR2)
       RETURN TABLE;

Parametri

Parametro Descrizione

directory_name

Nome della directory nel database.

Note sull'uso

  • Per eseguire DBMS_CLOUD.LIST_FILES con un utente diverso da ADMIN, è necessario concedere privilegi di lettura sulla directory a tale utente.Ad esempio, eseguire il comando seguente come ADMIN per concedere i privilegi di lettura a atpc_user:

    GRANT READ ON DIRECTORY data_pump_dir TO atpc_user;
  • Questa è una funzione tabella con pipeline con tipo restituito DBMS_CLOUD_TYPES.list_object_ret_t.

  • DBMS_CLOUD.LIST_FILES non ottiene il valore di checksum e restituisce NULL per questo campo.

Esempio

Questa è una funzione con pipeline che restituisce una riga per ogni file. Ad esempio, utilizzare la seguente query per utilizzare questa funzione:

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

Funzione LIST_OBJECTS

Questa funzione elenca gli oggetti nella posizione specificata nell'area di memorizzazione degli oggetti. I risultati includono i nomi degli oggetti e metadati aggiuntivi relativi agli oggetti, ad esempio dimensione, checksum, indicatore orario di creazione e indicatore orario dell'ultima modifica.

Sintassi

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

Parametri

Parametro Descrizione

credential_name

Il nome della credenziale per accedere allo storage degli oggetti cloud.

location_uri

URI oggetto o file. Il formato dell'URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI di storage degli oggetti cloud.

Note sull'uso

  • A seconda delle funzionalità dell'area di memorizzazione degli oggetti, DBMS_CLOUD.LIST_OBJECTS non restituisce valori per determinati attributi e il valore restituito per il campo è NULL in questo caso.

    Tutti gli archivi oggetti supportati restituiscono valori per i campi OBJECT_NAME, BYTES e CHECKSUM.

    La tabella riportata di seguito mostra il supporto per i campi CREATED e LAST_MODIFIED per area di memorizzazione degli oggetti.

    Area di memorizzazione degli oggetti CREATED LAST_MODIFIED
    Oracle Cloud Infrastructure Native Indicatore orario resi Indicatore orario resi
    Oracle Cloud Infrastructure Swift Restituisce NULL Indicatore orario resi
    Amazon S3 Restituisce NULL Indicatore orario resi
    Amazon S3 - Compatibile Restituisce NULL Indicatore orario resi
    Azure Indicatore orario resi Indicatore orario resi
  • Il valore di checksum è il checksum MD5. Si tratta di un numero esadecimale di 32 caratteri calcolato sul contenuto dell'oggetto.

  • Questa è una funzione tabella con pipeline con tipo restituito DBMS_CLOUD_TYPES.list_object_ret_t.

Esempio

Questa è una funzione con pipeline che restituisce una riga per ogni oggetto. Ad esempio, utilizzare la seguente query per utilizzare questa funzione:

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          

In questo esempio, namespace-string è lo spazio di nomi dello storage degli oggetti Oracle Cloud Infrastructure e bucketname è il nome del bucket. Per ulteriori informazioni, vedere Informazioni sugli spazi di nomi dello storage degli oggetti.

MOVE_OBJECT Procedura

Questa procedura sposta un oggetto da un bucket o una cartella dello storage degli oggetti cloud a un altro.

Il bucket o la cartella di origine e destinazione possono trovarsi nello stesso provider dell'area di memorizzazione degli oggetti cloud o in un altro provider.

Quando l'origine e la destinazione si trovano in aree di memorizzazione degli oggetti distinte o hanno account diversi con lo stesso provider cloud, è possibile assegnare nomi di credenziali separati per le posizioni di origine e destinazione.

Il nome della credenziale di origine viene utilizzato per impostazione predefinita anche dalla posizione di destinazione quando non viene fornito il nome della credenziale di destinazione.

Sintassi

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
);

Parametri

Parametro Descrizione

source_credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud di origine.

Se non si specifica un valore source_credential_name, credential_name viene impostato su NULL.

source_object_uri

Specifica l'URI che punta al bucket di storage degli oggetti o alla posizione della cartella di origine.

Questo parametro è obbligatorio.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere Formati URI di storage degli oggetti cloud.

target_object_uri

Specifica l'URI per il bucket o la cartella di storage degli oggetti di destinazione, in cui è necessario spostare i file.

Questo parametro è obbligatorio.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere Formati URI di storage degli oggetti cloud.

target_credential_name

Nome della credenziale per accedere alla posizione di storage degli oggetti cloud di destinazione.

Se non si specifica un valore target_credential_name, il valore target_object_uri viene impostato sul valore source_credential_name.

Esempio

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;
/

PUT_OBJECT Procedura

Questa procedura è sovraccaricata. In un modulo la procedura copia un file da Autonomous Database nello storage degli oggetti cloud. In un altro modulo, la procedura copia un file BLOB da Autonomous Database nello storage degli oggetti cloud.

Sintassi

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);

Parametri

Parametro Descrizione

credential_name

Il nome della credenziale per accedere allo storage degli oggetti cloud.

object_uri

URI oggetto o file. Il formato dell'URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI di storage degli oggetti cloud.

directory_name

Nome della directory in Autonomous Database.

Piede 1

contents

Specifica il file BLOB da copiare da Autonomous Database nello storage degli oggetti cloud.

file_name

Il nome del file nella directory specificata.

compression

Specifica la compressione utilizzata per memorizzare l'oggetto.

Valore predefinito: NULL

Nota a piè di pagina 1

Nota

Per eseguire DBMS_CLOUD.PUT_OBJECT con un utente diverso da ADMIN, è necessario concedere a tale utente i privilegi di lettura sulla directory. Ad esempio, eseguire il comando seguente come ADMIN per concedere i privilegi di lettura a atpc_user:

GRANT READ ON DIRECTORY data_pump_dir TO atpc_user;

Esempio

Per gestire i dati BLOB dopo l'elaborazione nel database e quindi memorizzarli direttamente in un file nell'area di memorizzazione degli oggetti, effettuare le operazioni riportate di seguito.

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;
/

Note sull'uso

A seconda dello storage degli oggetti cloud, le dimensioni dell'oggetto trasferito sono limitate come indicato di seguito.

Servizio di storage degli oggetti cloud Limite dimensione trasferimento oggetto

Oracle Cloud Infrastructure Object Storage

50 GB

Amazon S3

5 GB

Azure Blob Storage

256 MB

Amazon S3 - Compatibile

Impostato dal provider dell'area di memorizzazione oggetti. Per ulteriori informazioni, vedere la documentazione del provider.

L'area di memorizzazione degli oggetti Oracle Cloud Infrastructure non consente la scrittura di file in un bucket pubblico senza fornire credenziali (Oracle Cloud Infrastructure consente agli utenti di scaricare oggetti dai bucket pubblici). Pertanto, è necessario fornire un nome di credenziale con credenziali valide per memorizzare un oggetto in un bucket pubblico di Oracle Cloud Infrastructure utilizzando PUT_OBJECT.

Per ulteriori informazioni, vedere Formati URI di storage degli oggetti cloud.

SYNC_EXTERNAL_PART_TABLE Procedura

Questa procedura semplifica l'aggiornamento di una tabella partizionata esterna dai file nel cloud. Eseguire questa procedura ogni volta che vengono aggiunte nuove partizioni o quando le partizioni vengono rimosse dall'origine dell'area di memorizzazione degli oggetti per la tabella partizionata esterna.

Sintassi

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

Parametri

Parametro Descrizione

table_name

Nome della tabella di destinazione. Prima di eseguire DBMS_CLOUD.SYNC_EXTERNAL_PART_TABLE, è necessario creare la tabella di destinazione.

schema_name

Nome dello schema in cui risiede la tabella di destinazione. Il valore predefinito è NULL, ovvero la tabella di destinazione si trova nello stesso schema dell'utente che esegue la procedura.

update_columns

I nuovi file potrebbero introdurre una modifica allo schema. Gli aggiornamenti supportati includono: nuove colonne, colonne eliminate. Aggiornamenti alle colonne esistenti, ad esempio una modifica del tipo di dati genera errori.

Valore predefinito: False

VALIDATE_EXTERNAL_PART_TABLE Procedura

Questa procedura convalida i file di origine per una tabella partizionata esterna, genera informazioni di log e memorizza le righe che non corrispondono alle opzioni di formato specificate per la tabella esterna in una tabella badfile in Autonomous Database. Il form sovraccarico consente di utilizzare il parametro operation_id.

Sintassi

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);

Parametri

Parametro Descrizione

table_name

Il nome della tabella esterna.

operation_id

Utilizzare questo parametro per tenere traccia dell'avanzamento e dello stato finale dell'operazione di caricamento come ID corrispondente nella vista USER_LOAD_OPERATIONS.

partition_name

Se definito, viene convalidata solo una partizione specifica. Se non viene specificato, leggere tutte le partizioni in sequenza fino al raggiungimento di rowcount.

subpartition_name

Se definita, viene convalidata solo una partizione secondaria specifica. Se non viene specificato, leggere tutte le partizioni esterne o le partizioni secondarie in sequenza fino al raggiungimento di rowcount.

schema_name

Nome dello schema in cui si trova la tabella esterna. Il valore predefinito è NULL, ovvero la tabella esterna si trova nello stesso schema dell'utente che esegue la procedura.

rowcount

Numero di righe da analizzare. Il valore predefinito è NULL, ovvero vengono analizzate tutte le righe nei file di origine.

partition_key_validation

Solo per uso interno. Non utilizzare questo parametro.

stop_on_error

Determina se la convalida deve essere interrotta quando una riga viene rifiutata. Il valore predefinito è TRUE, ovvero la convalida si interrompe alla prima riga rifiutata. L'impostazione del valore su FALSE specifica che la convalida non si arresta alla prima riga rifiutata e convalida tutte le righe fino al valore specificato per il parametro rowcount.

VALIDATE_EXTERNAL_TABLE Procedura

Questa procedura convalida i file di origine per una tabella esterna, genera le informazioni di log e memorizza le righe che non corrispondono alle opzioni di formato specificate per la tabella esterna in una tabella badfile in Autonomous Database. Il form sovraccarico consente di utilizzare il parametro operation_id.

Sintassi

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);

Parametri

Parametro Descrizione

table_name

Il nome della tabella esterna.

operation_id

Utilizzare questo parametro per tenere traccia dell'avanzamento e dello stato finale dell'operazione di caricamento come ID corrispondente nella vista USER_LOAD_OPERATIONS.

schema_name

Nome dello schema in cui si trova la tabella esterna. Il valore predefinito è NULL, ovvero la tabella esterna si trova nello stesso schema dell'utente che esegue la procedura.

rowcount

Numero di righe da analizzare. Il valore predefinito è NULL, ovvero vengono analizzate tutte le righe nei file di origine.

stop_on_error

Determina se la convalida deve essere interrotta quando una riga viene rifiutata. Il valore predefinito è TRUE, ovvero la convalida si interrompe alla prima riga rifiutata. L'impostazione del valore su FALSE specifica che la convalida non si arresta alla prima riga rifiutata e convalida tutte le righe fino al valore specificato per il parametro rowcount.

Se la tabella esterna fa riferimento a file Avro, ORC o Parquet, la convalida viene interrotta alla prima riga rifiutata.

Quando la tabella esterna specifica il parametro format type impostato sul valore avro, orc o parquet, il parametro stop_on_error ha sempre il valore TRUE. Pertanto, il file errato della tabella sarà sempre vuoto per una tabella esterna che fa riferimento ai file Avro, ORC o Parquet.

Note sull'uso

  • DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE funziona sia con tabelle esterne partizionate che con tabelle ibride partizionate. Questa operazione consente di leggere i dati di tutte le partizioni esterne fino al raggiungimento di rowcount o all'applicazione di stop_on_error. Non si dispone del controllo su quale partizione, o parti di una partizione, viene letta in quale ordine.

VALIDATE_HYBRID_PART_TABLE Procedura

Questa procedura convalida i file di origine per una tabella con partizionamento ibrido, genera informazioni di log e memorizza le righe che non corrispondono alle opzioni di formato specificate per la tabella ibrida in una tabella badfile in Autonomous Database. Il form sovraccarico consente di utilizzare il parametro operation_id.

Sintassi

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);

Parametri

Parametro Descrizione

table_name

Il nome della tabella esterna.

operation_id

Utilizzare questo parametro per tenere traccia dell'avanzamento e dello stato finale dell'operazione di caricamento come ID corrispondente nella vista USER_LOAD_OPERATIONS.

partition_name

Se definito, viene convalidata solo una partizione specifica. Se non viene specificato, leggere tutte le partizioni esterne in sequenza fino al raggiungimento di rowcount.

subpartition_name

Se definita, viene convalidata solo una partizione secondaria specifica. Se non viene specificato, leggere tutte le partizioni esterne o le partizioni secondarie in sequenza fino al raggiungimento di rowcount.

schema_name

Nome dello schema in cui si trova la tabella esterna. Il valore predefinito è NULL, ovvero la tabella esterna si trova nello stesso schema dell'utente che esegue la procedura.

rowcount

Numero di righe da analizzare. Il valore predefinito è NULL, ovvero vengono analizzate tutte le righe nei file di origine.

partition_key_validation

Solo per uso interno. Non utilizzare questo parametro.

stop_on_error

Determina se la convalida deve essere interrotta quando una riga viene rifiutata. Il valore predefinito è TRUE, ovvero la convalida si interrompe alla prima riga rifiutata. L'impostazione del valore su FALSE specifica che la convalida non si arresta alla prima riga rifiutata e convalida tutte le righe fino al valore specificato per il parametro rowcount.