Externe partitionierte Daten abfragen (mit Partitionierungsklausel)

Wenn Sie mehrere Datendateien im Objektspeicher als einzelne externe Tabelle abfragen möchten und die Dateien als mehrere logische Partitionen dargestellt werden können, wird dringend empfohlen, eine externe partitionierte Tabelle zu verwenden. Bei Verwendung einer externen partitionierten Tabelle wird die logische Partitionierung Ihrer Datendateien für den Abfragezugriff beibehalten. Verwenden Sie die Prozedur DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE, um eine externe partitionierte Tabelle zu erstellen.

Es gibt zwei Möglichkeiten, eine externe partitionierte Tabelle in Autonomous Database zu erstellen:

  • Die erste Version ist für: Informationen zur Verwendung dieses Typs externer partitionierter Tabellen finden Sie unter Externe partitionierte Daten mit Quelldateiorganisation im Hive-Format abfragen.

  • Die zweite Version ist für: Wenn Sie auf diese Weise eine partitionierte externe Tabelle erstellen, nehmen Sie eine Partitionungsklausel in den Parameter partitioning_clause auf. Die aufzunehmende Partitionierungsklausel hängt von den Datendateien in der Cloud und vom Typ der verwendeten Partitionierung ab. In diesem Abschnitt wird diese Art der Verwendung externer partitionierter Tabellen beschrieben.

  1. Speichern Sie Ihre Objektspeicherzugangsdaten mit der Prozedur DBMS_CLOUD.CREATE_CREDENTIAL.

    Beispiele:

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

    Das Erstellen von Zugangsdaten für den Zugriff auf Oracle Cloud Infrastructure Object Storage ist nicht erforderlich, wenn Sie Ressourcen-Principal-Zugangsdaten aktivieren. Weitere Informationen finden Sie unter Resource Principal für den Zugriff auf Oracle Cloud Infrastructure-Ressourcen verwenden.

    Dieser Vorgang speichert die Zugangsdaten in einem verschlüsselten Format in der Datenbank. Sie können einen beliebigen Namen für die Zugangsdaten verwenden. Beachten Sie, dass dieser Schritt nur einmal erforderlich ist, es sei denn, die Zugangsdaten für den Objektspeicher ändern sich. Nachdem Sie die Zugangsdaten gespeichert haben, können Sie denselben Zugangsdatennamen zum Erstellen externer Tabellen verwenden.

    Informationen zu den Parametern username und password für verschiedene Object Storage-Services finden Sie unter Prozedur CREATE_CREDENTIAL.

  2. Erstellen Sie eine externe partitionierte Tabelle auf Basis der Quelldateien mit der Prozedur DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE.

    Die Prozedur DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE unterstützt externe partitionierte Dateien in den unterstützten Cloud-Objektspeicherservices. Die Zugangsdaten stellen eine Eigenschaft auf Tabellenebene dar. Daher müssen sich die externen Dateien in demselben Objektspeicher befinden.

    Beispiele:

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

    Parameter:

    • table_name: Der Name der externen Tabelle.

    • credential_name: Der Name der Zugangsdaten, die im vorherigen Schritt erstellt wurden.

    • partitioning_clause: ist die vollständige Partitionierungsklausel, einschließlich der Speicherortinformationen für einzelne Partitionen.

    • format: Definiert die Optionen, die Sie angeben können, um das Format der Quelldatei zu beschreiben. Format: Definiert die Optionen, die Sie angeben können, um das Format der Quelldatei zu beschreiben.

      Wenn die Daten in den Quelldateien verschlüsselt sind, entschlüsseln Sie die Daten, indem Sie den Parameter format mit der Option encryption angeben. Weitere Informationen zum Entschlüsseln von Daten finden Sie unter Daten beim Importieren aus Object Storage entschlüsseln.

    • column_list: Eine durch Komma getrennte Liste der Spaltendefinitionen in den Quelldateien.

    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.

    Jetzt können Sie Abfragen der externen Tabelle ausführen, die Sie im vorherigen Schritt erstellt haben. Autonomous Database nutzt die Partitionierungsinformationen der externen partitionierten Tabelle und stellt sicher, dass die Abfrage nur auf die relevanten Datendateien im Objektspeicher zugreift. Beispiel: Die folgende Abfrage liest nur Datendateien aus Partition P1:

    SELECT * FROM pet1 WHERE col1 < 750;

    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. Weitere Informationen finden Sie unter Metadatenspalten externer Tabellen.

    Wenn die Quelldateien Zeilen enthalten, die nicht mit den angegebenen Formatoptionen übereinstimmen, gibt die Abfrage einen Fehler aus. Sie können DBMS_CLOUD-Parameter wie rejectlimit verwenden, um diese Fehler zu unterdrücken. Als Alternative können Sie auch die erstellte externe partitionierte Tabelle validieren, um die Fehlermeldungen und abgelehnten Zeilen anzuzeigen, damit Sie die Formatoptionen entsprechend ändern können. Weitere Informationen finden Sie unter Externe Daten validieren und Externe partitionierte Daten validieren.

    Ausführliche Informationen zu den Parametern finden Sie unter Prozedur CREATE_EXTERNAL_PART_TABLE.

    Weitere Informationen zu den unterstützten Cloud-Object Storage-Services finden Sie unter DBMS_CLOUD URI-Formate.