DBMS_CLOUD für Objekte und Dateien

In diesem Abschnitt werden die DBMS_CLOUD-Unterprogramme beschrieben, die zum Arbeiten mit Objekten und Dateien verwendet werden.

Voraussetzungen

Als Entwickler können Sie DBMS_CLOUD-Prozeduren mit Autonomous Databases verwenden, die in Oracle Public Cloud, Multicloud oder Exadata Cloud@Customer bereitgestellt sind.

Je nach Deployment-Auswahl müssen die folgenden Voraussetzungen erfüllt sein, um die DBMS_CLOUD-Prozeduren mit den Serviceprovidern Amazon S3, Azure Blob Storage und Google Cloud Storage zu verwenden.

Eine ausgehende Konnektivität muss von Ihrem Flottenadministrator mit einem NAT-Gateway konfiguriert worden sein, wie unten beschrieben:
  • Erstellen Sie ein NAT-Gateway im virtuellen Cloud-Netzwerk (VCN), in dem sich Ihre Autonomous Database-Ressourcen befinden, indem Sie die Anweisungen unter NAT-Gateway erstellen in der Oracle Cloud Infrastructure-Dokumentation befolgen.
  • Nachdem Sie das NAT-Gateway erstellt haben, fügen Sie eine Routingregel und eine Egress-Sicherheitsregel zu jedem Subnetz (im VCN) hinzu, in dem sich Autonomous Database-Ressourcen befinden. So können diese Ressourcen mit dem Gateway einen Public Key aus Ihrer Azure AD-Instanz abrufen:
    1. Gehen Sie zur Seite Subnetzdetails für das Subnetz.
    2. Klicken Sie auf der Registerkarte Informationen zum Subnetz auf den Namen der Routentabelle des Subnetzes, um die Seite Routentabellendetails anzuzeigen.
    3. Prüfen Sie in der Tabelle der vorhandenen Routingregeln, ob bereits eine Regel mit den folgenden Eigenschaften vorhanden ist:
      • Zielort: 0.0.0.0/0
      • Zieltyp: NAT-Gateway
      • Ziel: Der Name des NAT-Gateway, das Sie gerade im VCN erstellt haben

      Wenn keine solche Regel vorhanden ist, klicken Sie auf Routenregeln hinzufügen, und fügen Sie eine Routingregel mit diesen Eigenschaften hinzu.

    4. Zurück zur Seite Subnetzdetails für das Subnetz.
    5. Klicken Sie in der Tabelle Sicherheitslisten des Subnetzes auf den Namen der Sicherheitsliste des Subnetzes, um die Seite Sicherheitslistendetails anzuzeigen.
    6. Klicken Sie im Seitenmenü unter Ressourcen auf Egress-Regeln.
    7. Prüfen Sie in der Tabelle der vorhandenen Ausgangsregeln, ob bereits eine Regel mit den folgenden Eigenschaften vorhanden ist:
      • Zieltyp: CIDR
      • Zielort: 0.0.0.0/0
      • IP-Protokoll: TCP
      • Quellportbereich: 443
      • Ziel-Portbereich: Alle

      Wenn keine derartige Regel vorhanden ist, klicken Sie auf Egress-Regeln hinzufügen, und fügen Sie eine Egress-Regel mit diesen Eigenschaften hinzu.

Die HTTP-Proxyeinstellungen in Ihrer Umgebung müssen es der Datenbank ermöglichen, auf den Cloud-Serviceprovider zuzugreifen.

Diese Einstellungen werden vom Flottenadministrator beim Erstellen der Exadata Cloud@Customer-Infrastruktur definiert, wie unter Exadata Database Service on Cloud@Customer mit der Konsole bereitstellen beschrieben.

Hinweis:

Die Netzwerkkonfiguration einschließlich des HTTP-Proxys kann nur bearbeitet werden, bis sich die Exadata-Infrastruktur im Status Aktivierung erforderlich befindet. Sobald sie aktiviert ist, können Sie diese Einstellungen nicht mehr bearbeiten.

Für die Einrichtung eines HTTP-Proxys für eine bereits bereitgestellte Exadata-Infrastruktur ist eine Serviceanfrage (SR) in My Oracle Support erforderlich. Weitere Informationen finden Sie unter Serviceanfrage in My Oracle Support erstellen.

DBMS_CLOUD Unterprogramme für Objekte und Dateien

Die Unterprogramme für die Objekt- und Dateiverwaltung im Package DBMS_CLOUD.

Unterprogramm Beschreibung

Prozedur COPY_COLLECTION

Diese Prozedur lädt Daten aus dem Cloud-Objektspeicher oder aus Dateien in einem Verzeichnis in eine vorhandene SODA-Collection.

Prozedur COPY_DATA

Diese Prozedur lädt Daten aus dem Cloud-Objektspeicher oder aus Dateien in einem Verzeichnis in vorhandene Autonomous Database-Tabellen.

Prozedur COPY_DATA für Avro-, ORC- oder Parkettdateien

Diese Prozedur, bei der der Parameter format type auf den Wert orc, parquet oder avro gesetzt ist, lädt Daten aus ORC-, Parquet- oder Avro-Dateien in der Cloud oder aus ORC-, Parquet- oder Avro-Dateien in einem Verzeichnis in vorhandene Autonomous Database-Tabellen.

Ähnlich wie Textdateien werden die Daten aus der ORC-, Parquet- oder Avro-Quelldatei in die vorhandene interne Tabelle kopiert.

Prozedur COPY_OBJECT

Diese Prozedur kopiert Dateien aus einem Cloud-Objektspeicher-Bucket in einen anderen.

Prozedur CREATE_EXTERNAL_TABLE

Diese Prozedur erstellt eine externe Tabelle für Dateien in der Cloud oder für Dateien in einem Verzeichnis. So können Sie Abfragen für externe Daten aus Autonomous Database ausführen.

Prozedur CREATE_EXTERNAL_TABLE für Avro-, ORC- oder Parkettdateien

Diese Prozedur mit dem format-Parameter type, der auf den Wert parquet, orc oder avro gesetzt ist, erstellt eine externe Tabelle mit Dateien im Parquet-, ORC- oder Avroformat in der Cloud oder in einem Verzeichnis.

So können Sie Abfragen für externe Daten aus Autonomous Database ausführen.

Prozedur CREATE_EXTERNAL_TEXT_INDEX

Diese Prozedur erstellt einen Textindex für die Objektspeicherdateien.

Prozedur CREATE_HYBRID_PART_TABLE

Diese Prozedur erstellt eine Hybrid-partitionierte Tabelle. So können Sie Abfragen hybrider partitionierter Daten aus Autonomous Database ausführen.

Prozedur DELETE_ALL_OPERATIONS

Diese Prozedur löscht entweder alle in der Tabelle user_load_operations in Ihrem Schema protokollierten Dataload-Vorgänge oder alle Dataload-Vorgänge des angegebenen Typs, wie mit dem Parameter type angegeben.

Prozedur DELETE_FILE

Diese Prozedur entfernt die angegebene Datei aus dem angegebenen Verzeichnis in Autonomous Database

Prozedur DELETE_OBJECT

Diese Prozedur löscht das angegebene Objekt im Objektspeicher.

Prozedur DELETE_OPERATION

Diese Prozedur akzeptiert eine operation_id als Eingabe und löscht die Logs, die mit der angegebenen operation_id verknüpft sind.

Prozedur DROP_EXTERNAL_TEXT_INDEX

Diese Prozedur löscht den Textindex für die Objektspeicherdateien.

Prozedur EXPORT_DATA

Diese Prozedur exportiert Daten aus Autonomous Database basierend auf dem Ergebnis einer Abfrage in Dateien in der Cloud. Mit dem überladenen Formular können Sie den Parameter operation_id verwenden. Je nach angegebener Option für den Parameter format type exportiert die Prozedur Zeilen als Text mit den Optionen CSV, JSON, Parquet oder XML in den Cloud-Objektspeicher.

Prozedur und Funktion GET_OBJECT

Diese Prozedur ist überladen. Die Prozedurform liest ein Objekt aus dem Cloud-Objektspeicher und kopiert es in Autonomous Database. Die Funktionsform liest ein Objekt aus dem Cloud-Objektspeicher und gibt ein BLOB an Autonomous Database zurück.

Funktion LIST_FILES

Diese Funktion listet die Dateien im angegebenen Verzeichnis auf. Die Ergebnisse umfassen die Dateinamen und zusätzliche Metadaten zu den Dateien, wie die Dateigröße in Byte sowie die Zeitstempel der Erstellung und der letzten Änderung.

Funktion LIST_OBJECTS

Diese Funktion listet Objekte am angegebenen Speicherort im Objektspeicher auf. Die Ergebnisse umfassen die Objektnamen und zusätzliche Metadaten zu den Objekten, wie Größe, Prüfsumme sowie Zeitstempel der Erstellung und der letzten Änderung.

Prozedur MOVE_OBJECT

Diese Prozedur verschiebt ein Objekt von einem Cloud-Objektspeicher-Bucket in einen anderen.

Prozedur PUT_OBJECT

Diese Prozedur ist überladen. In einer Form kopiert die Prozedur eine Datei aus Autonomous Database in den Cloud-Objektspeicher. In einer anderen Form kopiert die Prozedur ein BLOB aus Autonomous Database in den Cloud-Objektspeicher.

Prozedur SYNC_EXTERNAL_PART_TABLE

Diese Prozedur vereinfacht das Aktualisieren einer externen partitionierten Tabelle aus Dateien in der Cloud. Führen Sie diese Prozedur aus, wenn neue Partitionen hinzugefügt werden oder wenn Partitionen aus der Objektspeicherquelle für die externe partitionierte Tabelle entfernt werden.

Prozedur VALIDATE_EXTERNAL_TABLE

Diese Prozedur validiert die Quelldateien für eine externe Tabelle, generiert Loginformationen und speichert die Zeilen, die den für die externe Tabelle angegebenen Formatoptionen in einer badfile-Tabelle in Autonomous Database nicht entsprechen.

Prozedur VALIDATE_EXTERNAL_PART_TABLE

Diese Prozedur validiert die Quelldateien für eine externe partitionierte Tabelle, generiert Loginformationen und speichert die Zeilen, die den für die externe Tabelle angegebenen Formatoptionen nicht entsprechen, in einer Badfile-Tabelle in Autonomous Database.

Prozedur VALIDATE_HYBRID_PART_TABLE

Diese Prozedur validiert die Quelldateien für eine Hybridpartitionierungstabelle, generiert Loginformationen und speichert die Zeilen, die den für die Hybridtabelle angegebenen Formatoptionen nicht entsprechen, in einer Badfile-Tabelle in Autonomous Database.

Prozedur COPY_COLLECTION

Diese Prozedur lädt Daten aus dem Cloud-Objektspeicher oder aus einem Verzeichnis in eine SODA-Collection. Wenn die angegebene SODA-Collection nicht vorhanden ist, wird sie von der Prozedur erstellt. Mit dem überladenen Formular können Sie den Parameter operation_id verwenden.

Syntax

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

Parameter

Parameter Beschreibung

collection_name

Der Name der SODA-Collection, in die Daten geladen werden. Wenn bereits eine Collection mit diesem Namen vorhanden ist, werden die angegebenen Daten geladen. Andernfalls wird eine neue Collection erstellt.

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Dieser Parameter wird nicht verwendet, wenn Sie ein Verzeichnis mit file_uri_list angeben.

file_uri_list

Dieser Parameter gibt entweder eine durch Komma getrennte Liste der Quelldatei-URIs oder ein oder mehrere Verzeichnisse und Quelldateien an.

URIs für Cloud-Quelldatei

Sie können Platzhalter sowie reguläre Ausdrücke in den Dateinamen in Cloud-Quelldatei-URIs verwenden.

Reguläre Ausdrücke können nur verwendet werden, wenn der Parameter regexuri format auf TRUE gesetzt ist.

Die Zeichen "*" und "?" werden als Platzhalterzeichen betrachtet, wenn der Parameter regexuri auf FALSE gesetzt ist. Wenn der Parameter regexuri auf TRUE gesetzt ist, sind die Zeichen "*" und "?" Teil des angegebenen regulären Ausdrucksmusters.

Normale Ausdrucksmuster werden nur für den Dateinamen oder Unterordnerpfad in Ihren URIs unterstützt, und der Musterabgleich ist mit dem der Funktion REGEXP_LIKE identisch.

Beispiel:

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'

Das Format der URIs ist vom verwendeten Cloud-Object Storage-Service abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für Cloud-Objektspeicher.

Weitere Informationen zur Bedingung REGEXP_LIKE finden Sie unter REGEXP_LIKE-Bedingung in der SQL-Sprachreferenz für Oracle Database 19c oder in der SQL-Sprachreferenz für Oracle Database 23ai.

Verzeichnis

Sie können ein Verzeichnis und einen oder mehrere Dateinamen angeben oder eine durch Komma getrennte Liste mit Verzeichnissen und Dateinamen verwenden. Das Format zur Angabe eines Verzeichnisses lautet:'MY_DIR:filename.ext'. Standardmäßig ist der Verzeichnisname MY_DIR ein Datenbankobjekt, bei dem die Groß-/Kleinschreibung nicht beachtet wird. Bei dem Dateinamen ist die Groß-/Kleinschreibung zu beachten.

Sie können Platzhalter verwenden, um Dateinamen in einem Verzeichnis anzugeben. Das Zeichen "*" kann als Platzhalter für mehrere Zeichen, das Zeichen "?" als Platzhalter für ein einzelnes Zeichen verwendet werden. Beispiel: 'MY_DIR:*" oder 'MY_DIR:test?'

Um mehrere Verzeichnisse anzugeben, verwenden Sie eine durch Komma getrennte Verzeichnisliste. Beispiel:'MY_DIR1:*, MY_DIR2:test?'

Verwenden Sie doppelte Anführungszeichen, um einen Verzeichnisnamen anzugeben, bei dem die Groß-/Kleinschreibung beachtet wird. Beispiel: '"my_dir1":*, "my_dir2":Test?'

Um ein Anführungszeichen einzuschließen, verwenden Sie zwei Anführungszeichen. Beispiel: 'MY_DIR:''filename.ext'. Damit wird angegeben, dass filename mit einem Anführungszeichen (') beginnt.

format

Die Optionen, die das Format der Quelldateien beschreiben. Diese Optionen werden als JSON-Zeichenfolge angegeben.

Unterstützte Formate: characterset, compression, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, unpackarray, keyassignment und keypath.

Neben den genannten Formaten für JSON-Daten unterstützt Autonomous Database auch andere Formate. Die Liste der von Autonomous Database unterstützten Formatargumente finden Sie unter Formatparameter.

operation_id

Mit diesem Parameter können Sie den Fortschritt und den endgültigen Status des Ladevorgangs als entsprechende ID in der View USER_LOAD_OPERATIONS verfolgen.

Beispiel

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

Prozedur COPY_DATA

Diese Prozedur lädt Daten aus Dateien in der Cloud oder aus Dateien in einem Verzeichnis in vorhandene Autonomous Database-Tabellen. Mit dem überladenen Formular können Sie den Parameter operation_id verwenden.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der Zieltabelle in der Datenbank. Die Zieltabelle muss erstellt werden, bevor Sie COPY_DATA ausführen.

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Dieser Parameter wird nicht verwendet, wenn Sie ein Verzeichnis mit file_uri_list angeben.

file_uri_list

Sie können Platzhalter sowie reguläre Ausdrücke in den Dateinamen in Cloud-Quelldatei-URIs verwenden.

URIs für Cloud-Quelldatei

Dieser Parameter gibt entweder eine durch Komma getrennte Liste der Quelldatei-URIs oder ein oder mehrere Verzeichnisse und Quelldateien an.

Reguläre Ausdrücke können nur verwendet werden, wenn der Parameter regexuri format auf TRUE gesetzt ist.

Die Zeichen "*" und "?" werden als Platzhalterzeichen betrachtet, wenn der Parameter regexuri auf FALSE gesetzt ist. Wenn der Parameter regexuri auf TRUE gesetzt ist, sind die Zeichen "*" und "?" Teil des angegebenen regulären Ausdrucksmusters.

Normale Ausdrucksmuster werden nur für den Dateinamen oder Unterordnerpfad in Ihren URIs unterstützt, und der Musterabgleich ist mit dem der Funktion REGEXP_LIKE identisch.

Beispiel:

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'

Das Format der URIs ist vom verwendeten Cloud-Object Storage-Service abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für Cloud-Objektspeicher.

Weitere Informationen zur Bedingung REGEXP_LIKE finden Sie unter REGEXP_LIKE-Bedingung in der SQL-Sprachreferenz für Oracle Database 19c oder in der SQL-Sprachreferenz für Oracle Database 23ai.

Verzeichnis

Sie können ein Verzeichnis und einen oder mehrere Dateinamen angeben oder eine durch Komma getrennte Liste mit Verzeichnissen und Dateinamen verwenden. Das Format zur Angabe eines Verzeichnisses lautet:'MY_DIR:filename.ext'. Standardmäßig ist der Verzeichnisname MY_DIR ein Datenbankobjekt, bei dem die Groß-/Kleinschreibung nicht beachtet wird. Bei dem Dateinamen ist die Groß-/Kleinschreibung zu beachten.

Sie können Platzhalter verwenden, um Dateinamen in einem Verzeichnis anzugeben. Das Zeichen "*" kann als Platzhalter für mehrere Zeichen, das Zeichen "?" als Platzhalter für ein einzelnes Zeichen verwendet werden. Beispiel: 'MY_DIR:*" oder 'MY_DIR:test?'

Um mehrere Verzeichnisse anzugeben, verwenden Sie eine durch Komma getrennte Verzeichnisliste. Beispiel:'MY_DIR1:*, MY_DIR2:test?'

Verwenden Sie doppelte Anführungszeichen, um einen Verzeichnisnamen anzugeben, bei dem die Groß-/Kleinschreibung beachtet wird. Beispiel: '"my_dir1":*, "my_dir2":Test?'

Um ein Anführungszeichen einzuschließen, verwenden Sie zwei Anführungszeichen. Beispiel: 'MY_DIR:''filename.ext'. Damit wird angegeben, dass filename mit einem Anführungszeichen (') beginnt.

schema_name

Der Name des Schemas, in dem sich die Zieltabelle befindet. Der Standardwert ist NULL, d.h. die Zieltabelle befindet sich im selben Schema wie der Benutzer, der die Prozedur ausführt.

field_list

Gibt die Felder in den Quelldateien und deren Datentypen an. Der Standardwert ist NULL, d.h. die Felder und ihre Datentypen werden durch den Parameter column_list bestimmt. Die Syntax dieses Arguments entspricht der field_list-Klausel in regulären externen Oracle-Tabellen. Weitere Informationen finden Sie unter field_list in Oracle Database 19c Utilities oder Oracle Database 23ai Utilities.

Wenn die Option type des Parameters format den Wert json hat, wird dieser Parameter ignoriert.

Ein Beispiel mit field_list finden Sie unter Prozedur CREATE_EXTERNAL_TABLE.

format

Die Optionen, die das Format der Quell-, Log- und fehlerhaften Dateien beschreiben. Die Liste der Optionen und Informationen zum Angeben der Werte finden Sie unter Formatparameter.

Informationen zu den Dateiformatoptionen Avro, ORC oder Parquet finden Sie unter DBMS_CLOUD-Package - Formatoptionen für Avro, ORC oder Parquet.

operation_id

Mit diesem Parameter können Sie den Fortschritt und den endgültigen Status des Ladevorgangs als entsprechende ID in der View USER_LOAD_OPERATIONS verfolgen.

Hinweis zur Verwendung

Das Standardbetrennzeichen für Datensätze ist detected newline. Mit detected newline versucht DBMS_CLOUD automatisch, das richtige Zeilenvorschubzeichen zu finden, das als Datensatzbegrenzungszeichen verwendet werden soll. DBMS_CLOUD sucht zuerst nach dem Windows-Zeilenvorschubzeichen \r\n. Wird das Windows-Zeilenvorschubzeichen gefunden, wird es für alle Dateien in der Prozedur als Datensatzbegrenzungszeichen verwendet. Wenn kein Windows-Zeilenvorschubzeichen gefunden wird, sucht DBMS_CLOUD nach dem UNIX/Linux-Zeilenvorschubzeichen \n. Wird dieses gefunden, wird \n für alle Dateien in der Prozedur als Datensatzbegrenzungszeichen verwendet. Wenn die Quelldateien eine Kombination aus verschiedenen Datensatztrennzeichen verwenden, kann ein Fehler wie "KUP-04020: found record longer than buffer size supported" auftreten. In diesem Fall müssen Sie entweder die Quelldateien so ändern, dass sie dasselbe Datensatzbegrenzungszeichen angeben, oder Sie dürfen nur die Quelldateien angeben, die dasselbe Datensatzbegrenzungszeichen verwenden.

Weitere Informationen zur Formatoption recorddelmiter finden Sie unter Formatparameter.

Beispiele

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

Prozedur COPY_DATA für Avro-, ORC- oder Parquet-Dateien

Diese Prozedur, bei der der Parameter format type auf den Wert avro, orc oder parquet gesetzt ist, lädt Daten aus Avro-, ORC- oder Parquet-Dateien in der Cloud oder aus Dateien in einem Verzeichnis in vorhandene Autonomous Database-Tabellen.

Ähnlich wie Textdateien werden die Daten aus der Avro-, ORC- oder Parquet-Quelldatei in die bereits vorhandene interne Tabelle kopiert.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der Zieltabelle in der Datenbank. Die Zieltabelle muss erstellt werden, bevor Sie COPY_DATA ausführen.

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Dieser Parameter wird nicht verwendet, wenn Sie ein Verzeichnis mit file_uri_list angeben.

file_uri_list

Dieser Parameter gibt entweder eine durch Komma getrennte Liste der Quelldatei-URIs oder ein oder mehrere Verzeichnisse und Quelldateien an.

URIs für Cloud-Quelldatei

Sie können Platzhalter sowie reguläre Ausdrücke in den Dateinamen in Cloud-Quelldatei-URIs verwenden.

Reguläre Ausdrücke können nur verwendet werden, wenn der Parameter regexuri format auf TRUE gesetzt ist.

Die Zeichen "*" und "?" werden als Platzhalterzeichen betrachtet, wenn der Parameter regexuri auf FALSE gesetzt ist. Wenn der Parameter regexuri auf TRUE gesetzt ist, sind die Zeichen "*" und "?" Teil des angegebenen regulären Ausdrucksmusters.

Normale Ausdrucksmuster werden nur für den Dateinamen oder Unterordnerpfad in Ihren URIs unterstützt, und der Musterabgleich ist mit dem der Funktion REGEXP_LIKE identisch.

Beispiel:

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'

Das Format der URIs ist vom verwendeten Cloud-Object Storage-Service abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für Cloud-Objektspeicher.

Weitere Informationen zur Bedingung REGEXP_LIKE finden Sie unter REGEXP_LIKE-Bedingung in der SQL-Sprachreferenz für Oracle Database 19c oder in der SQL-Sprachreferenz für Oracle Database 23ai.

Verzeichnis

Sie können ein Verzeichnis und einen oder mehrere Dateinamen angeben oder eine durch Komma getrennte Liste mit Verzeichnissen und Dateinamen verwenden. Das Format zur Angabe eines Verzeichnisses lautet:'MY_DIR:filename.ext'. Standardmäßig ist der Verzeichnisname MY_DIR ein Datenbankobjekt, bei dem die Groß-/Kleinschreibung nicht beachtet wird. Bei dem Dateinamen ist die Groß-/Kleinschreibung zu beachten.

Sie können Platzhalter verwenden, um Dateinamen in einem Verzeichnis anzugeben. Das Zeichen "*" kann als Platzhalter für mehrere Zeichen, das Zeichen "?" als Platzhalter für ein einzelnes Zeichen verwendet werden. Beispiel: 'MY_DIR:*" oder 'MY_DIR:test?'

Um mehrere Verzeichnisse anzugeben, verwenden Sie eine durch Komma getrennte Verzeichnisliste. Beispiel:'MY_DIR1:*, MY_DIR2:test?'

Verwenden Sie doppelte Anführungszeichen, um einen Verzeichnisnamen anzugeben, bei dem die Groß-/Kleinschreibung beachtet wird. Beispiel: '"my_dir1":*, "my_dir2":Test?'

Um ein Anführungszeichen einzuschließen, verwenden Sie zwei Anführungszeichen. Beispiel: 'MY_DIR:''filename.ext'. Damit wird angegeben, dass filename mit einem Anführungszeichen (') beginnt.

schema_name

Der Name des Schemas, in dem sich die Zieltabelle befindet. Der Standardwert ist NULL, d.h. die Zieltabelle befindet sich im selben Schema wie der Benutzer, der die Prozedur ausführt.

field_list

Wird für Avro-, ORC- oder Parquet-Dateien ignoriert.

Die Felder in der Quelle entsprechen den Spalten der externen Tabelle nach Namen. Quelldatentypen werden in den Datentyp der externen Tabellenspalte konvertiert.

Informationen zu ORC-Dateien finden Sie unter DBMS_CLOUD-Package - Datentypzuordnung von ORC zu Oracle.

Informationen zur Zuordnung bei Parquet-Dateien finden Sie unter DBMS_CLOUD-Package - Datentypzuordnung von Parquet zu Oracle.

Informationen zur Zuordnung bei Avro-Dateien finden Sie unter DBMS_CLOUD-Package - Datentypzuordnung von Avro zu Oracle.

format

Die Optionen, die das Format der Quelldateien beschreiben. Für Avro-, ORC- oder Parquet-Dateien werden nur zwei Optionen unterstützt: siehe DBMS_CLOUD-Package - Formatoptionen für Avro, ORC oder Parquet.

Verwendungshinweise

  • Wie bei anderen Datendateien generieren Dataloads von Avro, ORC und Parquet Logs, die in den Tabellen dba_load_operations und user_load_operations angezeigt werden können. Bei jedem Ladevorgang wird ein Datensatz zu dba[Benutzer]_load_operations hinzugefügt, der die Tabelle mit den Logs angibt.

    Die Logtabelle enthält zusammenfassende Informationen zum Ladevorgang.

  • Wenn bei Avro, ORC oder Parquet der format-Parameter type auf den Wert avro, orc oder parquet gesetzt ist, ist die Tabelle BADFILE_TABLE immer leer.

    • Bei Parquet-Dateien lösen PRIMARY KEY-Constraint-Fehler einen ORA-Fehler aus.

    • Wenn bei Daten für eine Spalte ein Konvertierungsfehler auftritt, z.B. wenn die Zielspalte nicht groß genug ist, um den konvertierten Wert aufzunehmen, wird der Wert für die Spalte auf NULL gesetzt. Dies führt nicht zu einem abgelehnten Datensatz.

Prozedur COPY_OBJECT

Mit dieser Prozedur wird ein Objekt aus einem Cloud-Objektspeicher-Bucket oder -Ordner in einen anderen kopiert.

Quell- und Ziel-Bucket oder -Ordner können sich in demselben oder einem anderen Cloud-Objektspeicherprovider befinden.

Wenn sich Quelle und Ziel in eindeutigen Objektspeichern befinden oder unterschiedliche Accounts mit demselben Cloud-Provider haben, können Sie separate Zugangsdatennamen für die Quell- und Zielspeicherorte angeben.

Der Zugangsdatenname der Quelle wird standardmäßig auch vom Zielspeicherort verwendet, wenn kein Zugangsdatenname angegeben ist.

Syntax

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

Parameter

Parameter Beschreibung

source_credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Quellobjektspeicher.

Wenn Sie keinen source_credential_name-Wert angeben, wird credential_name auf NULL gesetzt.

source_object_uri

Gibt die URI an, die auf den Object Storage-Quell-Bucket oder den Speicherort des Ordners verweist.

Dieser Parameter ist erforderlich.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter URI-Formate für Cloud-Objektspeicher.

target_object_uri

Gibt die URI für den Zielobjektspeicher an.

Dieser Parameter ist erforderlich.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter URI-Formate für Cloud-Objektspeicher.

target_credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Zielspeicherort.

Wenn Sie keinen target_credential_name-Wert angeben, wird target_object_uri auf den Wert source_credential_name gesetzt.

Beispiel

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

Prozedur CREATE_EXTERNAL_PART_TABLE

Diese Prozedur erstellt eine externe partitionierte Tabelle für Dateien in der Cloud oder aus Dateien in einem Verzeichnis. So können Sie Abfragen für externe Daten aus Autonomous Database ausführen.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der externen Tabelle

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

partitioning_clause

Gibt die vollständige Partitionierungsklausel an, einschließlich der Speicherortinformationen für einzelne Partitionen.

Wenn Sie den Parameter partitioning_clause verwenden, ist der Parameter file_uri_list nicht zulässig.

file_uri_list

Dieser Parameter gibt entweder eine durch Komma getrennte Liste der Quelldatei-URIs oder ein oder mehrere Verzeichnisse und Quelldateien an.

URIs für Cloud-Quelldatei

Sie können Platzhalter sowie reguläre Ausdrücke in den Dateinamen in Cloud-Quelldatei-URIs verwenden.

Reguläre Ausdrücke können nur verwendet werden, wenn der Parameter regexuri format auf TRUE gesetzt ist.

Die Zeichen "*" und "?" werden als Platzhalterzeichen betrachtet, wenn der Parameter regexuri auf FALSE gesetzt ist. Wenn der Parameter regexuri auf TRUE gesetzt ist, sind die Zeichen "*" und "?" Teil des angegebenen regulären Ausdrucksmusters.

Normale Ausdrucksmuster werden nur für den Dateinamen oder Unterordnerpfad in Ihren URIs unterstützt, und der Musterabgleich ist mit dem der Funktion REGEXP_LIKE identisch.

Diese Option wird nur bei externen Tabellen unterstützt, die in einer Datei im Object Storage erstellt werden.

Beispiel:

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'

Wenn Sie den Parameter file_uri_list verwenden, ist der Parameter partitioning_clause nicht zulässig.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter URI-Formate für Cloud-Objektspeicher.

Weitere Informationen zur Bedingung REGEXP_LIKE finden Sie unter REGEXP_LIKE-Bedingung in der SQL-Sprachreferenz für Oracle Database 19c oder in der SQL-Sprachreferenz für Oracle Database 23ai.

column_list

Durch Komma getrennte Liste der Spaltennamen und Datentypen für die externe Tabelle. Für diesen Parameter gibt es je nach Typ der Datendateien die folgenden Anforderungen: file_uri_list

  • Der Parameter column_list ist bei unstrukturierten Dateien erforderlich. Bei unstrukturierten Dateien, z.B. bei CSV-Textdateien, muss der Parameter column_list alle Spaltennamen und Datentypen in der Datei sowie die Partitionsspalten angeben, die vom Objektnamen abgeleitet wurden.

  • Der Parameter column_list ist bei strukturierten Dateien optional. Beispiel: Bei Avro-, ORC- oder Parquet-Datendateien ist der Parameter column_list nicht erforderlich. Wenn column_list nicht angegeben wird, muss die Option partition_columns des Parameters format Spezifikationen für Spaltennamen (name) und Datentypen (type) enthalten.

field_list

Gibt die Felder in den Quelldateien und deren Datentypen an. Der Standardwert ist NULL, d.h. die Felder und ihre Datentypen werden durch den Parameter column_list bestimmt. Die Syntax dieses Arguments entspricht der field_list-Klausel in regulären externen Oracle-Tabellen. Weitere Informationen finden Sie unter field_list in Oracle Database 19c Utilities oder Oracle Database 23ai Utilities.

format

Die Formatoption partition_columns gibt die Spaltennamen in DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE-und die Datentypen von Partitionsspalten an, wenn die Partitionsspalten aus dem Dateipfad abgeleitet werden, je nachdem, ob es sich um einen strukturierten oder unstrukturierten Datendateityp handelt:

  • Wenn DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE den Parameter column_list enthält und die Datendateien unstrukturiert sind, wie z.B. CSV-Textdateien, enthält partition_columns den Datentyp nicht. Beispiel: Verwenden Sie für diesen partition_columns-Spezifikationstyp ein Format wie das Folgende:

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

    Der Datentyp ist nicht erforderlich, da er im DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE-Parameter column_list angegeben ist.

  • Wenn DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE den Parameter column_list nicht enthält und es sich um strukturierte Datendateien wie Avro-, ORC- oder Parquet-Dateien handelt, enthält die Option partition_columns sowohl den Spaltennamen, Unterklausel name, als auch den Datentyp, Unterklauseltype. Beispiel: Im Folgenden wird eine partition_columns-Spezifikation dargestellt:

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

Wenn die Datendateien unstrukturiert sind und die Unterklausel type mit partition_columns angegeben ist, wird die Unterklausel type ignoriert.

Bei Objektnamen, die nicht auf dem Hive-Format basieren, muss die Reihenfolge der von partition_columns angegebenen Spalten mit der Reihenfolge übereinstimmen, in der sie im Objektnamen im im im Parameter file_uri_list angegebenen Dateipfad angezeigt werden.

Informationen zu allen format-Parameteroptionen, die das Format der Quelldateien beschreiben, finden Sie unter URI-Formate für Cloud-Objektspeicher.

Verwendungshinweise

  • Sie können diese Prozedur nicht mit beiden Parametern aufrufen: partitioning_clause und file_uri_list.

  • Die Angabe des Parameters column_list ist bei strukturierten Datendateien, einschließlich Avro-, Parquet- oder ORC-Datendateien, optional. Wenn column_list nicht angegeben wird, muss die Option partition_columns des Parameters format sowohl name als auch type enthalten.

  • Der Parameter column_list ist bei unstrukturierten Datendateien wie CSV-Textdateien erforderlich.

  • Die Prozedur DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE unterstützt externe partitionierte Dateien in den unterstützen Cloud-Objektspeicherservices, darunter:
    • Oracle Cloud Infrastructure Object Storage

    • Azure Blob Storage

    Weitere Informationen finden Sie unter URI-Formate für Cloud-Objektspeicher.

  • Das Verfahren DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE unterstützt externe partitionierte Dateien in Verzeichnissen, entweder in einem lokalen Dateisystem oder in einem Netzwerkdateisystem.

  • Wenn Sie DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE mit dem Parameter file_uri_list aufrufen, muss es sich bei den Typen für die im Dateinamen des Cloud-Objektspeicher angegebenen Spalten um einen der folgenden Typen handeln:

    VARCHAR2(n)
    NUMBER(n)
    NUMBER(p,s)
    NUMBER
    DATE
    TIMESTAMP(9)
  • Das Standardbetrennzeichen für Datensätze ist detected newline. Mit detected newline versucht DBMS_CLOUD automatisch, das richtige Zeilenvorschubzeichen zu finden, das als Datensatzbegrenzungszeichen verwendet werden soll. DBMS_CLOUD sucht zuerst nach dem Windows-Zeilenvorschubzeichen \r\n. Wird das Windows-Zeilenvorschubzeichen gefunden, wird es für alle Dateien in der Prozedur als Datensatzbegrenzungszeichen verwendet. Wenn kein Windows-Zeilenvorschubzeichen gefunden wird, sucht DBMS_CLOUD nach dem UNIX/Linux-Zeilenvorschubzeichen \n. Wird dieses gefunden, wird \n für alle Dateien in der Prozedur als Datensatzbegrenzungszeichen verwendet. Wenn die Quelldateien eine Kombination aus verschiedenen Datensatztrennzeichen verwenden, kann ein Fehler wie "KUP-04020: found record longer than buffer size supported" auftreten. In diesem Fall müssen Sie entweder die Quelldateien so ändern, dass sie dasselbe Datensatzbegrenzungszeichen angeben, oder Sie dürfen nur die Quelldateien angeben, die dasselbe Datensatzbegrenzungszeichen verwenden.

    Informationen zur Formatoption recorddelmiter finden Sie unter URI-Formate für Cloud-Objektspeicher.

  • Die externen partitionierten Tabellen, die Sie mit DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE erstellen, enthalten zwei unsichtbare Spalten: file$path und file$name. Anhand dieser Spalten können Sie ermitteln, aus welcher Datei ein Datensatz stammt.

    • file$path: Gibt den Dateipfadtext bis zum Anfang des Objektnamens an.

    • file$name: Gibt den Objektnamen an, einschließlich des gesamten Textes, der auf den Bucket-Namen folgt.

Beispiele

Beispiel für die Verwendung des Parameters 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;                     
/

Beispiel für die Verwendung der Parameter file_uri_list und column_list mit unstrukturierten Datendateien:

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

Beispiel für die Verwendung von file_uri_list ohne den Parameter column_list mit strukturierten Datendateien:

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

Prozedur CREATE_EXTERNAL_TABLE

Diese Prozedur erstellt eine externe Tabelle für Dateien in der Cloud oder aus Dateien in einem Verzeichnis. So können Sie Abfragen für externe Daten aus Autonomous Database ausführen.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der externen Tabelle

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Dieser Parameter wird nicht verwendet, wenn Sie ein Verzeichnis oder eine Tabellen-Hyperlink-URL mit file_uri_list angeben.

file_uri_list

Dieser Parameter gibt entweder eine durch Komma getrennte Liste der Quelldatei-URIs oder ein oder mehrere Verzeichnisse und Quelldateien an.

URIs für Cloud-Quelldatei

Sie können Platzhalter sowie reguläre Ausdrücke in den Dateinamen in Cloud-Quelldatei-URIs verwenden.

Reguläre Ausdrücke können nur verwendet werden, wenn der Parameter regexuri format auf TRUE gesetzt ist.

Die Zeichen "*" und "?" werden als Platzhalterzeichen betrachtet, wenn der Parameter regexuri auf FALSE gesetzt ist. Wenn der Parameter regexuri auf TRUE gesetzt ist, sind die Zeichen "*" und "?" Teil des angegebenen regulären Ausdrucksmusters.

Normale Ausdrucksmuster werden nur für den Dateinamen oder Unterordnerpfad in Ihren URIs unterstützt, und der Musterabgleich ist mit dem der Funktion REGEXP_LIKE identisch.

Diese Option wird nur bei externen Tabellen unterstützt, die in einer Datei im Object Storage erstellt werden.

Beispiel:

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'

Das Format der URIs ist vom verwendeten Cloud-Object Storage-Service abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für Cloud-Objektspeicher.

Weitere Informationen zur Bedingung REGEXP_LIKE finden Sie unter REGEXP_LIKE-Bedingung in der SQL-Sprachreferenz für Oracle Database 19c oder in der SQL-Sprachreferenz für Oracle Database 23ai.

Verzeichnis

Sie können ein Verzeichnis und einen oder mehrere Dateinamen angeben oder eine durch Komma getrennte Liste mit Verzeichnissen und Dateinamen verwenden. Das Format zur Angabe eines Verzeichnisses lautet:'MY_DIR:filename.ext'. Standardmäßig ist der Verzeichnisname MY_DIR ein Datenbankobjekt, bei dem die Groß-/Kleinschreibung nicht beachtet wird. Bei dem Dateinamen ist die Groß-/Kleinschreibung zu beachten.

Sie können Platzhalter verwenden, um Dateinamen in einem Verzeichnis anzugeben. Das Zeichen "*" kann als Platzhalter für mehrere Zeichen, das Zeichen "?" als Platzhalter für ein einzelnes Zeichen verwendet werden. Beispiel: 'MY_DIR:*" oder 'MY_DIR:test?'

Um mehrere Verzeichnisse anzugeben, verwenden Sie eine durch Komma getrennte Verzeichnisliste. Beispiel:'MY_DIR1:*, MY_DIR2:test?'

Verwenden Sie doppelte Anführungszeichen, um einen Verzeichnisnamen anzugeben, bei dem die Groß-/Kleinschreibung beachtet wird. Beispiel: '"my_dir1":*, "my_dir2":Test?'

Um ein Anführungszeichen einzuschließen, verwenden Sie zwei Anführungszeichen. Beispiel: 'MY_DIR:''filename.ext'. Damit wird angegeben, dass filename mit einem Anführungszeichen (') beginnt.

column_list

Durch Komma getrennte Liste der Spaltennamen und Datentypen für die externe Tabelle.

field_list

Gibt die Felder in den Quelldateien und deren Datentypen an. Der Standardwert ist NULL, d.h. die Felder und ihre Datentypen werden durch den Parameter column_list bestimmt. Die Syntax dieses Arguments entspricht der field_list-Klausel in regulären externen Oracle Database-Tabellen Weitere Informationen zu field_list finden Sie unter ORACLE_LOADER Access Driver field_list unter der Klausel field_definitions in Oracle Database 19c Utilities oder Oracle Database 23ai Utilities.

format

Die Optionen, die das Format der Quelldateien beschreiben. Die Liste der Optionen und Informationen zum Angeben der Werte finden Sie unter Formatparameter.

Informationen zu Dateien im Format Avro, ORC oder Parquet finden Sie unter Prozedur CREATE_EXTERNAL_TABLE für Avro-, ORC- oder Parquet-Dateien.

Verwendungshinweise

  • Die Prozedur DBMS_CLOUD.CREATE_EXTERNAL_TABLE unterstützt externe partitionierte Dateien in den unterstützten Cloud-Object Storage-Services, einschließlich Azure Blob Storage.

    Die Zugangsdaten stellen eine Eigenschaft auf Tabellenebene dar. Daher müssen sich die externen Dateien in demselben Objektspeicher befinden.

    Weitere Informationen finden Sie unter URI-Formate für Cloud-Objektspeicher.

  • Das Standardbetrennzeichen für Datensätze ist detected newline. Mit detected newline versucht DBMS_CLOUD automatisch, das richtige Zeilenvorschubzeichen zu finden, das als Datensatzbegrenzungszeichen verwendet werden soll. DBMS_CLOUD sucht zuerst nach dem Windows-Zeilenvorschubzeichen \r\n. Wird das Windows-Zeilenvorschubzeichen gefunden, wird es für alle Dateien in der Prozedur als Datensatzbegrenzungszeichen verwendet. Wenn kein Windows-Zeilenvorschubzeichen gefunden wird, sucht DBMS_CLOUD nach dem UNIX/Linux-Zeilenvorschubzeichen \n. Wird dieses gefunden, wird \n für alle Dateien in der Prozedur als Datensatzbegrenzungszeichen verwendet. Wenn die Quelldateien eine Kombination aus verschiedenen Datensatztrennzeichen verwenden, kann ein Fehler wie "KUP-04020: found record longer than buffer size supported" auftreten. In diesem Fall müssen Sie entweder die Quelldateien so ändern, dass sie dasselbe Datensatzbegrenzungszeichen angeben, oder Sie dürfen nur die Quelldateien angeben, die dasselbe Datensatzbegrenzungszeichen verwenden.

    Informationen zur Formatoption recorddelimiter finden Sie unter Formatparameter.

Beispiel

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

Prozedur CREATE_EXTERNAL_TABLE für Avro, ORC oder Parquet-Dateien

Diese Prozedur mit dem format-Parameter type, der auf den Wert avro, orc oder parquet gesetzt ist, erstellt eine externe Tabelle mit Dateien im Format Avro, ORC oder Parquet in der Cloud oder in einem Verzeichnis.

So können Sie Abfragen für externe Daten aus Autonomous Database ausführen.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der externen Tabelle

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Dieser Parameter wird nicht verwendet, wenn Sie ein Verzeichnis mit file_uri_list angeben.

file_uri_list

Dieser Parameter gibt entweder eine durch Komma getrennte Liste der Quelldatei-URIs oder ein oder mehrere Verzeichnisse und Quelldateien an.

URIs für Cloud-Quelldatei

Sie können Platzhalter sowie reguläre Ausdrücke in den Dateinamen in Cloud-Quelldatei-URIs verwenden.

Reguläre Ausdrücke können nur verwendet werden, wenn der Parameter regexuri format auf TRUE gesetzt ist.

Die Zeichen "*" und "?" werden als Platzhalterzeichen betrachtet, wenn der Parameter regexuri auf FALSE gesetzt ist. Wenn der Parameter regexuri auf TRUE gesetzt ist, sind die Zeichen "*" und "?" Teil des angegebenen regulären Ausdrucksmusters.

Normale Ausdrucksmuster werden nur für den Dateinamen oder Unterordnerpfad in Ihren URIs unterstützt, und der Musterabgleich ist mit dem der Funktion REGEXP_LIKE identisch.

Diese Option wird nur bei externen Tabellen unterstützt, die in einer Datei im Object Storage erstellt werden.

Beispiel:

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'

Das Format der URIs ist vom verwendeten Cloud-Object Storage-Service abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für Cloud-Objektspeicher.

Weitere Informationen zur Bedingung REGEXP_LIKE finden Sie unter REGEXP_LIKE-Bedingung in der SQL-Sprachreferenz für Oracle Database 19c oder in der SQL-Sprachreferenz für Oracle Database 23ai.

Verzeichnis

Sie können ein Verzeichnis und einen oder mehrere Dateinamen angeben oder eine durch Komma getrennte Liste mit Verzeichnissen und Dateinamen verwenden. Das Format zur Angabe eines Verzeichnisses lautet:'MY_DIR:filename.ext'. Standardmäßig ist der Verzeichnisname MY_DIR ein Datenbankobjekt, bei dem die Groß-/Kleinschreibung nicht beachtet wird. Bei dem Dateinamen ist die Groß-/Kleinschreibung zu beachten.

Sie können Platzhalter verwenden, um Dateinamen in einem Verzeichnis anzugeben. Das Zeichen "*" kann als Platzhalter für mehrere Zeichen, das Zeichen "?" als Platzhalter für ein einzelnes Zeichen verwendet werden. Beispiel: 'MY_DIR:*" oder 'MY_DIR:test?'

Um mehrere Verzeichnisse anzugeben, verwenden Sie eine durch Komma getrennte Verzeichnisliste. Beispiel:'MY_DIR1:*, MY_DIR2:test?'

Verwenden Sie doppelte Anführungszeichen, um einen Verzeichnisnamen anzugeben, bei dem die Groß-/Kleinschreibung beachtet wird. Beispiel: '"my_dir1":*, "my_dir2":Test?'

Um ein Anführungszeichen einzuschließen, verwenden Sie zwei Anführungszeichen. Beispiel: 'MY_DIR:''filename.ext'. Damit wird angegeben, dass filename mit einem Anführungszeichen (') beginnt.

column_list

(Optional) Wenn dieses Feld angegeben ist, überschreibt es den Parameter format->schema, der angibt, dass das Schema, die Spalten und die Datentypen automatisch abgeleitet werden. Weitere Informationen finden Sie beim Parameter "format".

Wenn column_list für eine Avro-, ORC- oder Parquet-Quelle angegeben ist, müssen die Spaltennamen mit den Spalten in der Datei übereinstimmen. Oracle-Datentypen müssen den Datentypen Avro, ORC oder Parquet entsprechend zugeordnet werden.

Informationen zu Parquet-Dateien finden Sie unter DBMS_CLOUD-Package - Datentypzuordnung von Parquet zu Oracle.

Informationen zu ORC-Dateien finden Sie unter DBMS_CLOUD-Package - Datentypzuordnung von ORC zu Oracle.

Informationen zu Avro-Dateien finden Sie unter DBMS_CLOUD-Package - Datentypzuordnung von Avro zu Oracle.

field_list

Wird für Avro-, ORC- oder Parquet-Dateien ignoriert.

Die Felder in der Quelle entsprechen den Spalten der externen Tabelle nach Namen. Quelldatentypen werden in den Datentyp der externen Tabellenspalte konvertiert.

Informationen zu ORC-Dateien finden Sie unter DBMS_CLOUD-Package - Datentypzuordnung von ORC zu Oracle

Informationen zu Parquet-Dateien finden Sie unter DBMS_CLOUD-Package - Datentypzuordnung von Parquet zu Oracle.

Informationen zu Avro-Dateien finden Sie unter DBMS_CLOUD-Package - Datentypzuordnung von Avro zu Oracle.

format

Weitere Informationen zu Quelldateien für Avro, ORC oder Parquet type finden Sie unter DBMS_CLOUD-Paketformatoptionen für Avro, ORC oder Parquet.

Beispiele: ORC

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

Beispiele: Avro

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

Beispiele: Parquet

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

Zuordnung von Avro-, ORC- oder Parquet-Spaltennamen zu Oracle-Spaltennamen

Informationen zur Zuordnung von Spaltennamen und zur Verwendung der Spaltennamenskonvertierung in Oracle SQL finden Sie unter DBMS_CLOUD-Package - Spaltennamenszuordnung von Avro, ORC und Parquet zu Oracle.

Prozedur CREATE_EXTERNAL_TEXT_INDEX

Diese Prozedur erstellt einen Textindex für Object Storage-Dateien.

Die Prozedur CREATE_EXTERNAL_TEXT_INDEX erstellt einen Textindex für die Object Storage-Dateien, die im Verzeichnis location_uri angegeben sind. Der Index wird in regelmäßigen Abständen für alle neuen Hinzufügungen oder Löschungen aktualisiert, die mit Dateien in der Speicherort-URI vorgenommen werden.

Syntax

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

Parameter

Parameter Beschreibung

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicherort. Bei öffentlichen, vorab authentifizierten oder vorab signierten Bucket-URIs kann ein NULL-Wert angegeben werden.

Wenn Sie keinen credential_name-Wert angeben, wird credential_name auf einen NULL-Wert festgelegt.

location_uri

Gibt den Objektspeicher-Bucket oder die Ordner-URI an.

Dieser Parameter ist erforderlich.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter DBMS_CLOUD Package File Cloud Object Storage-URI-Formate.

index_name Gibt den Namen des Index an, den Sie für die Dateien im Verzeichnis location_uri erstellen.

Dieser Parameter ist erforderlich.

format

Gibt zusätzliche Konfigurationsoptionen an. Optionen werden als JSON-Zeichenfolge angegeben.

Folgende Formatoptionen werden unterstützt:

refresh_rate: Gibt die Häufigkeit in Minuten an, mit der der lokale Index aktualisiert wird. Neue Dateiuploads und -löschungen führen zu einer Indexaktualisierung. Der Standardwert beträgt 5 Minuten.

binary_files: Gibt an, ob der Inhalt der zu indexierenden Dateien binär ist. Beispiel: PDF, MS-Word, Der Standardwert ist FALSE.

stop_words: Gibt eine Liste der Stoppwörter an, die beim Erstellen von Indizes angegeben werden können.

Der Wert stop_words gibt an, ob es sich um eine Liste mit Stoppwörtern oder um eine Tabelle mit Stoppwörtern handelt. Wenn ein JSON-Array als Parameter für Stoppwörter angegeben wird, wird es als Liste behandelt. Andernfalls wird der Parameter für Stoppwörter als Tabellenname behandelt, dessen Spalte "STOP_WORDS" zum Lesen in der Liste der Stoppwörter verwendet wird.

Sie können Stoppwörter mit den folgenden Methoden angeben:

  • JSON-Array: Beispiel: format := '{"stop_words":["king","queen"]}'
  • Name der Stoppworttabelle: Beispiel: format := '{"stop_words":"STOP_WORDS_TABLE"}'

Wenn Sie keinen format-Parameter angeben, wird format auf einen NULL-Wert gesetzt.

Beispiel

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

Prozedur CREATE_HYBRID_PART_TABLE

Diese Prozedur erstellt eine Hybrid-partitionierte Tabelle. Auf diese Weise können Sie Abfragen für hybride partitionierte Daten aus Autonomous Database mit Datenbankobjekten und -dateien in der Cloud oder mit Datenbankobjekten und -dateien in einem Verzeichnis ausführen.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der externen Tabelle

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

partitioning_clause

Gibt die vollständige Partitionierungsklausel an, einschließlich der Speicherortinformationen für einzelne Partitionen.

Um Verzeichnisse zu verwenden, unterstützt die Partitionierungsklausel die Werte LOCATION und DEFAULT DIRECTORY.

Sie können Platzhalter sowie reguläre Ausdrücke in den Dateinamen in Cloud-Quelldatei-URIs verwenden.

Reguläre Ausdrücke können nur verwendet werden, wenn der Parameter regexuri format auf TRUE gesetzt ist.

Die Zeichen "*" und "?" werden als Platzhalterzeichen betrachtet, wenn der Parameter regexuri auf FALSE gesetzt ist. Wenn der Parameter regexuri auf TRUE gesetzt ist, sind die Zeichen "*" und "?" Teil des angegebenen regulären Ausdrucksmusters.

Normale Ausdrucksmuster werden nur für den Dateinamen oder Unterordnerpfad in Ihren URIs unterstützt, und der Musterabgleich ist mit dem der Funktion REGEXP_LIKE identisch. Muster regulärer Ausdrücke werden für Verzeichnisnamen nicht unterstützt.

Beispiel:

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

Weitere Informationen zur Bedingung REGEXP_LIKE finden Sie unter REGEXP_LIKE-Bedingung in der SQL-Sprachreferenz für Oracle Database 19c oder in der SQL-Sprachreferenz für Oracle Database 23ai.

column_list

Durch Komma getrennte Liste der Spaltennamen und Datentypen für die externe Tabelle.

field_list

Gibt die Felder in den Quelldateien und deren Datentypen an. Der Standardwert ist NULL, d.h. die Felder und ihre Datentypen werden durch den Parameter column_list bestimmt. Die Syntax dieses Arguments entspricht der field_list-Klausel in regulären externen Oracle-Tabellen. Weitere Informationen finden Sie unter field_list in Oracle Database 19c Utilities oder Oracle Database 23ai Utilities.

format

Die Optionen, die das Format der Quelldateien beschreiben. Die Liste der Optionen und Informationen zum Angeben der Werte finden Sie unter Formatparameter.

Verwendungshinweise

  • Die Prozedur DBMS_CLOUD.CREATE_HYBRID_PART_TABLE unterstützt externe partitionierte Dateien in den unterstützten Cloud-Object Storage-Services, einschließlich Azure Blob Storage.

    Die Zugangsdaten stellen eine Eigenschaft auf Tabellenebene dar. Daher müssen sich die externen Dateien in demselben Objektspeicher befinden.

    Weitere Informationen finden Sie unter URI-Formate für Cloud-Objektspeicher.

  • Das Verfahren DBMS_CLOUD.CREATE_HYBRID_PART_TABLE unterstützt hybride partitionierte Dateien in Verzeichnissen, entweder in einem lokalen Dateisystem oder in einem Netzwerkdateisystem.

  • Die externen partitionierten Tabellen, die Sie mit DBMS_CLOUD.CREATE_HYBRID_PART_TABLE erstellen, enthalten zwei unsichtbare Spalten: file$path und file$name. Anhand dieser Spalten können Sie ermitteln, aus welcher Datei ein Datensatz stammt.

    • file$path: Gibt den Dateipfadtext bis zum Anfang des Objektnamens an.

    • file$name: Gibt den Objektnamen an, einschließlich des gesamten Textes, der auf den Bucket-Namen folgt.

Beispiele

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

Prozedur DELETE_ALL_OPERATIONS

Diese Prozedur löscht entweder alle in der Tabelle user_load_operations in Ihrem Schema protokollierten Dataload-Vorgänge oder alle Dataload-Vorgänge des angegebenen Typs, wie mit dem Parameter type angegeben.

Syntax

DBMS_CLOUD.DELETE_ALL_OPERATIONS (
	type      IN VARCHAR DEFAULT NULL);

Parameter

Parameter Beschreibung

type

Gibt den zu löschenden Vorgangstyp an. Typwerte finden Sie in der Spalte TYPE in der Tabelle user_load_operations.

Wenn kein type angegeben wird, werden alle Zeilen gelöscht.

Hinweis zur Verwendung

  • DBMS_CLOUD.DELETE_ALL_OPERATIONS löscht derzeit ausgeführte Vorgänge (Vorgänge mit dem Status "Wird ausgeführt") nicht.

Prozedur DELETE_FILE

Diese Prozedur entfernt die angegebene Datei aus dem angegebenen Verzeichnis in Autonomous Database.

Syntax

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

Parameter

Parameter Beschreibung

directory_name

Der Name des Verzeichnisses in der Autonomous Database-Instanz.

file_name

Der Name der zu entfernenden Datei.

force

Ignorieren und melden Sie keine Fehler, wenn die Datei nicht vorhanden ist. Gültige Werte: TRUE und FALSE. Der Standardwert ist FALSE.

Hinweis:

Um DBMS_CLOUD.DELETE_FILE mit einem anderen Benutzer als ADMIN auszuführen, müssen Sie diesem Benutzer Schreibberechtigungen für das Verzeichnis erteilen, das die Datei enthält.Beispiel: Führen Sie den folgenden Befehl als ADMIN aus, um atpc_user Schreibberechtigungen zu erteilen:
GRANT WRITE ON DIRECTORY data_pump_dir TO atpc_user;

Beispiel

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

Prozedur DELETE_OBJECT

Diese Prozedur löscht das angegebene Objekt im Objektspeicher.

Syntax

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

Parameter

Parameter Beschreibung

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

object_uri

Objekt- oder Datei-URI des zu löschenden Objekts. Das Format der URI ist vom verwendeten Cloud-Objektspeicherservice abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für Cloud-Objektspeicher.

force

Fehler ignorieren und nicht melden, wenn das Objekt nicht vorhanden ist. Gültige Werte: TRUE und FALSE. Der Standardwert ist FALSE.

Beispiel

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

Prozedur DELETE_OPERATION

Diese Prozedur löscht die Dataload-Einträge für die angegebene Vorgangs-ID, die in den Tabellen user_load_operations oder dba_load_operations in Ihrem Schema protokolliert wurde.

Syntax

DBMS_CLOUD.DELETE_OPERATION (
	id      IN NUMBER);

Parameter

Parameter Beschreibung

id

Gibt die Vorgangs-ID an, die mit den Logdateieinträgen verknüpft ist, die Sie löschen möchten.

Beispiel

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

Prozedur DROP_EXTERNAL_TEXT_INDEX

Diese Prozedur löscht den Textindex für die Object Storage-Dateien.

Die Prozedur DROP_EXTERNAL_TEXT_INDEX löscht den angegebenen Index, der mit der Prozedur CREATE_EXTERNAL_TEXT_INDEX erstellt wurde.

Syntax

DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
      index_name       IN  VARCHAR2,
);

Parameter

Parameter Beschreibung
index_name

Gibt den Namen des Index an, den Sie löschen.

Der Indexname muss mit dem Namen übereinstimmen, der zum Zeitpunkt der Indexerstellung angegeben wurde.

Dieser Parameter ist erforderlich.

Beispiel

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

Prozedur EXPORT_DATA

Diese Prozedur exportiert Daten aus Autonomous Database basierend auf dem Ergebnis einer Abfrage. Diese Prozedur ist überladen und unterstützt das Schreiben von Dateien in die Cloud oder in ein Verzeichnis.

Basierend auf dem Parameter format type exportiert die Prozedur Dateien in die Cloud oder in ein Verzeichnis als Textdateien im Format CSV, JSON, Parquet oder XML.

Syntax

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

Parameter

Parameter Beschreibung

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

Wenn der Parameter für die Zugangsdaten nicht enthalten ist, gibt er die Ausgabe in ein Verzeichnis an.

file_uri_list

Es gibt verschiedene Formen, je nach Wert des Formatparameters und je nachdem, ob Sie einen Berechtigungsnachweisparameter einschließen:
  • Wenn der format-Parameter type den Wert json hat, wird die JSON-Datei im Objektspeicher oder im angegebenen Verzeichnis mit einem generierten Dateinamen basierend auf dem Wert des Parameters file_uri_list gespeichert. Weitere Informationen finden Sie unter Dateibenennung für Textausgabe (CSV, JSON, Parquet oder XML).

  • Wenn der format-Parameter type den Wert datapump hat, ist file_uri_list eine durch Komma getrennte Liste der Dumpdateien. Gibt die Dateien an, die im Objektspeicher erstellt werden sollen. Die Verwendung von Platzhalter- und Ersetzungszeichen wird in file_uri_list nicht unterstützt.

  • Wenn der Parameter credential_name nicht angegeben ist, geben Sie einen Verzeichnisnamen in file_uri_list an.

Das Format der URIs ist vom verwendeten Cloud-Objektspeicherservice abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für Cloud-Objektspeicher.

format

Eine JSON-Zeichenfolge mit Optionen für Exportformate.

Die unterstützte Option ist:

  • type: Die format-Option type ist erforderlich und muss einen der folgenden Werte aufweisen: csv | datapump | json | parquet | xml.

Siehe DBMS_CLOUD Packageformatoptionen für EXPORT_DATA.

query

Verwenden Sie diesen Parameter, um eine SELECT-Anweisung anzugeben, mit der nur die erforderlichen Daten exportiert werden. Die Abfrage bestimmt den Inhalt der Dateien, die Sie als Textdateien CSV, JSON, Parquet oder XML oder als Dumpdateien exportieren. Beispiel:

SELECT warehouse_id, quantity FROM inventories

Wenn der Wert format type json lautet, wird jedes Abfrageergebnis geprüft, und wenn es nicht JSON ist, wie mit der Funktion bestimmt: JSON_OBJECT_T.parse(), transformiert DBMS_CLOUD.EXPORT_DATA die Abfrage so, dass sie die Funktion JSON_OBJECT enthält, um die Zeile in JSON zu konvertieren. Weitere Informationen finden Sie unter JSON_OBJECT in Oracle Database 19c SQL Language Reference oder Oracle Database 23ai SQL Language Reference und JSON_OBJECT_T Object Type in der Oracle Database 19c PL/SQL Packages and Types Reference oder in der Oracle Database 23ai PL/SQL Packages and Types Reference.

Beispiel:

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

operation_id

Mit diesem Parameter können Sie den Fortschritt und den endgültigen Status des Exportvorgangs als entsprechende ID in der View USER_LOAD_OPERATIONS verfolgen.

Verwendungshinweise:

  • Bei dem von Ihnen angegebenen query-Parameterwert kann es sich bei Bedarf um eine erweiterte Abfrage handeln, z.B. eine Abfrage, die Joins oder Unterabfragen enthält.

  • Je nach angegebenem Formatparameter gibt DBMS_CLOUD.EXPORT_DATA die Ergebnisse der angegebenen Abfrage im Cloud-Objektspeicher oder in einem Verzeichnis in den Dateiformaten CSV, JSON, Parquet oder XML aus.

    Unter Daten mit DBMS_CLOUD.EXPORT_DATA als Text in Objektspeicher exportieren und Daten mit DBMS_CLOUD.EXPORT_DATA in ein Verzeichnis exportieren finden Sie weitere Informationen zur Verwendung von DBMS_CLOUD.EXPORT_DATA mit CSV-, JSON-, Parquet- oder XML-Ausgabedateien.

  • Bei einer CSV-, JSON- oder XML-Ausgabe ist dies standardmäßig der Fall, wenn eine generierte Datei 10 MB Daten enthält und eine neue Ausgabedatei erstellt wird. Wenn Sie jedoch weniger als 10 MB an Ergebnisdaten haben, sind möglicherweise mehrere Ausgabedateien vorhanden, abhängig vom Datenbankservice und der Anzahl der ECPUs (OCPUs, wenn Ihre Datenbank OCPUs verwendet) für die Autonomous Database-Instanz.

    Weitere Informationen finden Sie unter Dateibenennung für Textausgabe (CSV, JSON, Parquet oder XML).

    Die standardmäßige Ausgabedatei-Chunk-Größe beträgt 10 MB für CSV, JSON oder XML. Sie können diesen Wert mit dem Parameter format und der Option maxfilesize ändern. Weitere Informationen finden Sie unter DBMS_CLOUD-Packageformatoptionen für EXPORT_DATA.

  • Bei Parquet-Ausgaben beträgt jede generierte Datei weniger als 128 MB, und es können mehrere Ausgabedateien generiert werden. Wenn Sie jedoch weniger als 128 MB an Ergebnisdaten haben, sind abhängig vom Datenbankservice und der Anzahl der ECPUs (OCPUs, wenn Ihre Datenbank OCPUs verwendet) für die Autonomous Database-Instanz möglicherweise mehrere Ausgabedateien vorhanden.

    Weitere Informationen finden Sie unter Dateibenennung für Textausgabe (CSV, JSON, Parquet oder XML).

  • Das Parquet-Ausgabeformat kann nur mit High- und Medium-Datenbankservices für Autonomous Databases auf dedizierter Exadata-Infrastruktur verwendet werden.

Hinweise zur Verwendung von DBMS_CLOUD.EXPORT_DATA mit Ausgabe in ein Verzeichnis

  • Das angegebene Verzeichnis muss vorhanden sein, und Sie müssen als ADMIN-Benutzer angemeldet sein oder WRITE-Zugriff auf das Verzeichnis haben.

  • DBMS_CLOUD.EXPORT_DATA erstellt keine Verzeichnisse.

  • Die Prozedur überschreibt keine Dateien. Beispiel: Wenn eine Dumpdatei in der file_uri_list vorhanden ist, meldet DBMS_CLOUD.EXPORT_DATA einen Fehler wie:

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

Beispiele

Das folgende Beispiel zeigt DBMS_CLOUD.EXPORT_DATA mit dem Formatparameter type mit dem Wert 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;
/  

Das folgende Beispiel zeigt DBMS_CLOUD.EXPORT_DATA mit dem Formatparameter type mit Wert 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;
/

Das folgende Beispiel zeigt DBMS_CLOUD.EXPORT_DATA mit dem Formatparameter type mit Wert 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;
/  

Prozedur und Funktion GET_OBJECT

Diese Prozedur ist überladen. Die Prozedurform liest ein Objekt aus dem Cloud-Objektspeicher und kopiert es in Autonomous Database. Die Funktionsform liest ein Objekt aus dem Cloud-Objektspeicher und gibt ein BLOB an Autonomous Database zurück.

Syntax

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;

Parameter

Parameter Beschreibung

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

object_uri

Objekt- oder Datei-URI. Das Format der URI ist vom verwendeten Cloud-Objektspeicherservice abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für Cloud-Objektspeicher.

directory_name

Der Name des Verzeichnisses in der Datenbank.

Fußnote 1

file_name

Gibt den Namen der zu erstellenden Datei an. Wenn kein Dateiname angegeben wird, wird der Dateiname nach dem letzten Schrägstrich im Parameter object_uri verwendet. Verwenden Sie in Sonderfällen, z.B. wenn der Dateiname Schrägstriche enthält, den Parameter file_name.

startoffset

Der Offset in Byte, ab dem die Prozedur mit dem Lesen beginnt.

endoffset

Der Offset in Byte, bei dem die Prozedur den Lesevorgang beendet.

compression

Gibt die Komprimierung an, mit der das Objekt gespeichert wird. Wenn compression auf ‘AUTO’ gesetzt ist, wird die Datei dekomprimiert (der Wert ‘AUTO’ impliziert, dass das mit object_uri angegebene Objekt mit Gzip komprimiert ist).

Fußnote 1

Hinweis:

Um DBMS_CLOUD.GET_OBJECT mit einem anderen Benutzer als ADMIN auszuführen, müssen Sie diesem Benutzer WRITE-Berechtigungen für das Verzeichnis erteilen. Beispiel: Führen Sie den folgenden Befehl als ADMIN aus, um atpc_user Schreibberechtigungen zu erteilen:

GRANT WRITE ON DIRECTORY data_pump_dir TO atpc_user;

Rückgabewerte

Die Funktionsform liest aus dem Objektspeicher, und DBMS_CLOUD.GET_OBJECT gibt ein BLOB zurück.

Beispiele

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

So lesen Sie Zeichendaten aus einer Datei im Objektspeicher:

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;

So fügen Sie ein im Objektspeicher gespeichertes Bild einem BLOB in der Datenbank hinzu:


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 diesem Beispiel ist namespace-string der Oracle Cloud Infrastructure-Objektspeicher-Namespace und bucketname der Bucket-Name. Weitere Informationen finden Sie unter Object Storage-Namespaces.

Funktion LIST_FILES

Diese Funktion listet die Dateien im angegebenen Verzeichnis auf. Die Ergebnisse umfassen die Dateinamen und zusätzliche Metadaten zu den Dateien, wie die Dateigröße in Byte sowie die Zeitstempel der Erstellung und der letzten Änderung.

Syntax

DBMS_CLOUD.LIST_FILES (
	directory_name      IN VARCHAR2)
       RETURN TABLE;

Parameter

Parameter Beschreibung

directory_name

Der Name des Verzeichnisses in der Datenbank.

Verwendungshinweise

  • Um DBMS_CLOUD.LIST_FILES mit einem anderen Benutzer als ADMIN auszuführen, müssen Sie diesem Benutzer Leseberechtigungen für das Verzeichnis erteilen.Beispiel: Führen Sie den folgenden Befehl als ADMIN ausführen, um atpc_user Leseberechtigungen zu erteilen:

    GRANT READ ON DIRECTORY data_pump_dir TO atpc_user;
  • Dies ist eine Pipelinetabellenfunktion mit dem Rückgabetyp DBMS_CLOUD_TYPES.list_object_ret_t.

  • DBMS_CLOUD.LIST_FILES ruft den Prüfsummenwert nicht ab und gibt NULL für dieses Feld zurück.

Beispiel

Dies ist eine Pipelinefunktion, die eine Zeile für jede Datei zurückgibt. Beispiel: Verwenden Sie die folgende Abfrage, um diese Funktion zu verwenden:

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

Funktion LIST_OBJECTS

Diese Funktion listet Objekte am angegebenen Speicherort im Objektspeicher auf. Die Ergebnisse umfassen die Objektnamen und zusätzliche Metadaten zu den Objekten, wie Größe, Prüfsumme sowie Zeitstempel der Erstellung und der letzten Änderung.

Syntax

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

Parameter

Parameter Beschreibung

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

location_uri

Objekt- oder Datei-URI. Das Format der URI ist vom verwendeten Cloud-Objektspeicherservice abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für Cloud-Objektspeicher.

Verwendungshinweise

  • Je nach den Funktionen des Objektspeichers gibt DBMS_CLOUD.LIST_OBJECTS keine Werte für bestimmte Attribute zurück. In diesem Fall lautet der Rückgabewert für das Feld NULL.

    Alle unterstützten Objektspeicher geben Werte für die Felder OBJECT_NAME, BYTES und CHECKSUM zurück.

    Die folgende Tabelle zeigt die Unterstützung für die Felder CREATED und LAST_MODIFIED nach Objektspeicher:

    Objektspeicher CREATED LAST_MODIFIED
    Oracle Cloud Infrastructure-nativ Gibt Zeitstempel zurück Gibt Zeitstempel zurück
    Oracle Cloud Infrastructure-Swift Gibt NULL zurück Gibt Zeitstempel zurück
    Amazon S3 Gibt NULL zurück Gibt Zeitstempel zurück
    Amazon S3-kompatibel Gibt NULL zurück Gibt Zeitstempel zurück
    Azure Gibt Zeitstempel zurück Gibt Zeitstempel zurück
  • Der Prüfsummenwert ist die MD5-Prüfsumme. Hierbei handelt es sich um eine Hexadezimalzahl mit 32 Zeichen, die auf dem Objektinhalt berechnet wird.

  • Dies ist eine Pipelinetabellenfunktion mit dem Rückgabetyp DBMS_CLOUD_TYPES.list_object_ret_t.

Beispiel

Dies ist eine Pipelinefunktion, die eine Zeile für jedes Objekt zurückgibt. Beispiel: Verwenden Sie die folgende Abfrage, um diese Funktion zu verwenden:

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 diesem Beispiel ist namespace-string der Oracle Cloud Infrastructure-Objektspeicher-Namespace und bucketname der Bucket-Name. Weitere Informationen finden Sie unter Object Storage-Namespaces.

Prozedur MOVE_OBJECT

Diese Prozedur verschiebt ein Objekt aus einem Cloud-Objektspeicher-Bucket oder -Ordner in einen anderen.

Quell- und Ziel-Bucket oder -Ordner können sich in demselben oder einem anderen Cloud-Objektspeicherprovider befinden.

Wenn sich Quelle und Ziel in eindeutigen Objektspeichern befinden oder unterschiedliche Accounts mit demselben Cloud-Provider haben, können Sie separate Zugangsdatennamen für die Quell- und Zielspeicherorte angeben.

Der Zugangsdatenname der Quelle wird standardmäßig auch vom Zielspeicherort verwendet, wenn kein Zugangsdatenname angegeben ist.

Syntax

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

Parameter

Parameter Beschreibung

source_credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Quellobjektspeicher.

Wenn Sie keinen source_credential_name-Wert angeben, wird credential_name auf NULL gesetzt.

source_object_uri

Gibt die URI an, die auf den Object Storage-Quell-Bucket oder den Speicherort des Ordners verweist.

Dieser Parameter ist erforderlich.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter URI-Formate für Cloud-Objektspeicher.

target_object_uri

Gibt die URI für den Object Storage-Ziel-Bucket oder -Ordner an, in den die Dateien verschoben werden müssen.

Dieser Parameter ist erforderlich.

Das Format der URIs ist vom Cloud-Objektspeicherservice abhängig. Weitere Informationen finden Sie unter URI-Formate für Cloud-Objektspeicher.

target_credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Zielspeicherort.

Wenn Sie keinen target_credential_name-Wert angeben, wird target_object_uri auf den Wert source_credential_name gesetzt.

Beispiel

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

Prozedur PUT_OBJECT

Diese Prozedur ist überladen. In einer Form kopiert die Prozedur eine Datei aus Autonomous Database in den Cloud-Objektspeicher. In einer anderen Form kopiert die Prozedur ein BLOB aus Autonomous Database in den Cloud-Objektspeicher.

Syntax

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

Parameter

Parameter Beschreibung

credential_name

Der Name der Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher.

object_uri

Objekt- oder Datei-URI. Das Format der URI ist vom verwendeten Cloud-Objektspeicherservice abhängig. Weitere Einzelheiten finden Sie unter URI-Formate für Cloud-Objektspeicher.

directory_name

Der Name des Verzeichnisses in der Autonomous Database.

Fußnote 1

contents

Gibt die BLOB an, die aus Autonomous Database in den Cloud-Objektspeicher kopiert werden soll.

file_name

Der Name der Datei im angegebenen Verzeichnis.

compression

Gibt die Komprimierung an, mit der das Objekt gespeichert wird.

Standardwert: NULL

Fußnote 1

Hinweis:

Um DBMS_CLOUD.PUT_OBJECT mit einem anderen Benutzer als ADMIN auszuführen, müssen Sie diesem Benutzer Leseberechtigungen für das Verzeichnis erteilen. Beispiel: Führen Sie den folgenden Befehl als ADMIN aus, um atpc_user Leseberechtigungen zu erteilen:

GRANT READ ON DIRECTORY data_pump_dir TO atpc_user;

Beispiel

So verarbeiten Sie BLOB-Daten nach der datenbankinternen Verarbeitung und speichern die Daten dann direkt in einer Datei im Objektspeicher:

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

Verwendungshinweise

Je nach Cloud-Objektspeicher ist die Größe des übertragenen Objekts wie folgt begrenzt:

Cloud-Objektspeicherservice Größenlimit für Objektübertragung

Oracle Cloud Infrastructure Object Storage

50 GB

Amazon S3

5 GB

Azure Blob Storage

256 MB

Amazon S3-kompatibel

Wird vom Objektspeicherprovider festgelegt. Weitere Informationen finden Sie in der Dokumentation des Providers.

Der Oracle Cloud Infrastructure-Objektspeicher lässt das Schreiben von Dateien in einen öffentlichen Bucket ohne Angabe von Zugangsdaten nicht zu (mit Oracle Cloud Infrastructure können Benutzer Objekte aus öffentlichen Buckets herunterladen). Daher müssen Sie einen Zugangsdatennamen mit gültigen Zugangsdaten angeben, um ein Objekt in einem öffentlichen Oracle Cloud Infrastructure-Bucket mit PUT_OBJECT zu speichern.

Weitere Informationen finden Sie unter URI-Formate für Cloud-Objektspeicher.

Prozedur SYNC_EXTERNAL_PART_TABLE

Diese Prozedur vereinfacht das Aktualisieren einer externen partitionierten Tabelle aus Dateien in der Cloud. Führen Sie diese Prozedur aus, wenn neue Partitionen hinzugefügt werden oder wenn Partitionen aus der Objektspeicherquelle für die externe partitionierte Tabelle entfernt werden.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der Zieltabelle. Die Zieltabelle muss erstellt werden, bevor Sie DBMS_CLOUD.SYNC_EXTERNAL_PART_TABLE ausführen.

schema_name

Der Name des Schemas, in dem sich die Zieltabelle befindet. Der Standardwert ist NULL, d.h. die Zieltabelle befindet sich im selben Schema wie der Benutzer, der die Prozedur ausführt.

update_columns

Die neuen Dateien können zu einer Änderung des Schemas führen. Die unterstützten Aktualisierungen umfassen: neue Spalten, gelöschte Spalten. Aktualisierungen vorhandener Spalten, z.B. eine Änderung des Datentyps, lösen Fehler aus.

Standardwert: False

Prozedur VALIDATE_EXTERNAL_PART_TABLE

Diese Prozedur validiert die Quelldateien für eine externe partitionierte Tabelle, generiert Loginformationen und speichert die Zeilen, die den für die externe Tabelle angegebenen Formatoptionen nicht entsprechen, in einer Badfile-Tabelle in Autonomous Database. Mit dem überladenen Formular können Sie den Parameter operation_id verwenden.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der externen Tabelle

operation_id

Mit diesem Parameter können Sie den Fortschritt und den endgültigen Status des Ladevorgangs als entsprechende ID in der View USER_LOAD_OPERATIONS verfolgen.

partition_name

Wenn definiert, wird nur eine bestimmte Partition validiert. Wenn keine Angabe gemacht wird, werden alle Partitionen sequenziell gelesen, bis rowcount erreicht ist.

subpartition_name

Wenn definiert, wird nur eine bestimmte Unterpartition validiert. Wenn keine Angabe gemacht wird, wird aus allen externen Partitionen oder Unterpartitionen sequenziell gelesen, bis rowcount erreicht ist.

schema_name

Der Name des Schemas, in dem sich die externe Tabelle befindet. Der Standardwert ist NULL, d.h. die externe Tabelle befindet sich im selben Schema wie der Benutzer, der die Prozedur ausführt.

rowcount

Anzahl der zu scannenden Zeilen. Der Standardwert ist NULL, d.h. alle Zeilen in den Quelldateien werden gescannt.

partition_key_validation

Nur für interne Verwendung. Verwenden Sie diesen Parameter nicht.

stop_on_error

Bestimmt, ob die Validierung gestoppt werden soll, wenn eine Zeile abgelehnt wird. Der Standardwert ist TRUE, d.h. die Validierung wird bei der ersten abgelehnten Zeile gestoppt. Wenn der Wert auf FALSE gesetzt wird, wird die Validierung nicht bei der ersten abgelehnten Zeile gestoppt, und alle Zeilen bis zum für den Parameter rowcount angegebenen Wert werden validiert.

Prozedur VALIDATE_EXTERNAL_TABLE

Diese Prozedur validiert die Quelldateien für eine externe Tabelle, generiert Loginformationen und speichert die Zeilen, die den für die externe Tabelle angegebenen Formatoptionen in einer badfile-Tabelle in Autonomous Database nicht entsprechen. Mit dem überladenen Formular können Sie den Parameter operation_id verwenden.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der externen Tabelle

operation_id

Mit diesem Parameter können Sie den Fortschritt und den endgültigen Status des Ladevorgangs als entsprechende ID in der View USER_LOAD_OPERATIONS verfolgen.

schema_name

Der Name des Schemas, in dem sich die externe Tabelle befindet. Der Standardwert ist NULL, d.h. die externe Tabelle befindet sich im selben Schema wie der Benutzer, der die Prozedur ausführt.

rowcount

Anzahl der zu scannenden Zeilen. Der Standardwert ist NULL, d.h. alle Zeilen in den Quelldateien werden gescannt.

stop_on_error

Bestimmt, ob die Validierung gestoppt werden soll, wenn eine Zeile abgelehnt wird. Der Standardwert ist TRUE, d.h. die Validierung wird bei der ersten abgelehnten Zeile gestoppt. Wenn der Wert auf FALSE gesetzt wird, wird die Validierung nicht bei der ersten abgelehnten Zeile gestoppt, und alle Zeilen bis zum für den Parameter rowcount angegebenen Wert werden validiert.

Wenn die externe Tabelle auf Avro-, ORC- oder Parquet-Dateien verweist, wird die Validierung bei der ersten abgelehnten Zeile gestoppt.

Wenn die externe Tabelle den format-Parameter type angibt und dieser auf den Wert avro, orc oder parquet gesetzt ist, hat der Parameter stop_on_error effektiv immer den Wert TRUE. Daher ist die Tabellen-Badfile für eine externe Tabelle, die auf Avro-, ORC- oder Parquet-Dateien verweist, immer leer.

Verwendungshinweise

  • DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE funktioniert sowohl mit partitionierten externen Tabellen als auch mit hybriden partitionierten Tabellen. Dadurch werden möglicherweise Daten aus allen externen Partitionen gelesen, bis rowcount erreicht ist oder stop_on_error angewendet wird. Sie haben keine Kontrolle darüber, welche Partitionen oder welche Teile einer Partition in welcher Reihenfolge gelesen werden.

Prozedur VALIDATE_HYBRID_PART_TABLE

Diese Prozedur validiert die Quelldateien für eine Hybridpartitionierungstabelle, generiert Loginformationen und speichert die Zeilen, die den für die Hybridtabelle angegebenen Formatoptionen nicht entsprechen, in einer Badfile-Tabelle in Autonomous Database. Mit dem überladenen Formular können Sie den Parameter operation_id verwenden.

Syntax

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

Parameter

Parameter Beschreibung

table_name

Der Name der externen Tabelle

operation_id

Mit diesem Parameter können Sie den Fortschritt und den endgültigen Status des Ladevorgangs als entsprechende ID in der View USER_LOAD_OPERATIONS verfolgen.

partition_name

Wenn definiert, wird nur eine bestimmte Partition validiert. Wenn keine Angabe gemacht wird, wird aus allen externen Partitionen sequenziell gelesen, bis rowcount erreicht ist.

subpartition_name

Wenn definiert, wird nur eine bestimmte Unterpartition validiert. Wenn keine Angabe gemacht wird, wird aus allen externen Partitionen oder Unterpartitionen sequenziell gelesen, bis rowcount erreicht ist.

schema_name

Der Name des Schemas, in dem sich die externe Tabelle befindet. Der Standardwert ist NULL, d.h. die externe Tabelle befindet sich im selben Schema wie der Benutzer, der die Prozedur ausführt.

rowcount

Anzahl der zu scannenden Zeilen. Der Standardwert ist NULL, d.h. alle Zeilen in den Quelldateien werden gescannt.

partition_key_validation

Nur für interne Verwendung. Verwenden Sie diesen Parameter nicht.

stop_on_error

Bestimmt, ob die Validierung gestoppt werden soll, wenn eine Zeile abgelehnt wird. Der Standardwert ist TRUE, d.h. die Validierung wird bei der ersten abgelehnten Zeile gestoppt. Wenn der Wert auf FALSE gesetzt wird, wird die Validierung nicht bei der ersten abgelehnten Zeile gestoppt, und alle Zeilen bis zum für den Parameter rowcount angegebenen Wert werden validiert.