Interrogation des données partitionnées externes (avec clause de partitionnement)

Si vous voulez interroger plusieurs fichiers de données de la banque d'objets en tant que table externe unique et que ces fichiers peuvent être représentés sous la forme de plusieurs partitions logiques, il est vivement recommandé d'utiliser une table partitionnée externe. L'utilisation d'une table partitionnée externe conserve le partitionnement logique des fichiers de données pour l'accès aux requêtes. Utilisez la procédure DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE pour créer une table partitionnée externe.

Vous pouvez créer une table partitionnée externe sur Autonomous Database de deux manières :

  • La première version est pour. Pour plus d'informations sur ce type d'utilisation de table partitionnée externe, reportez-vous à Interrogation des données partitionnées externes avec l'organisation de fichier source au format Hive.

  • La deuxième version est pour. Lorsque vous créez une table externe partitionnée de cette manière, vous incluez une clause de partitionnement dans le paramètre partitioning_clause. La clause de partitionnement que vous indiquez dépend des fichiers de données dans le cloud et du type de partitionnement que vous utilisez. Cette section décrit ce type d'utilisation de table partitionnée externe.

  1. Stockez vos informations d'identification de banque d'objets à l'aide de la procédure DBMS_CLOUD.CREATE_CREDENTIAL.

    Exemple :

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

    La création d'informations d'identification pour accéder à Oracle Cloud Infrastructure Object Storage n'est pas requise si vous activez les informations d'identification de principal de ressource. Pour plus d'informations, reportez-vous à Utilisation du principal de ressource pour accéder aux ressources Oracle Cloud Infrastructure.

    Cette opération stocke les informations d'identification dans la base de données dans un format crypté. Vous pouvez utiliser n'importe quel nom d'informations d'identification. Cette étape est requise une seule fois, sauf si les informations d'identification de banque d'objets changent. Une fois les informations d'identification stockées, vous pouvez utiliser le même nom d'informations d'identification pour la création de tables externes.

    Reportez-vous à Procédure CREATE_CREDENTIAL pour plus d'informations sur les paramètres username et password des différents services de stockage d'objet.

  2. Créez une table partitionnée externe sur vos fichiers source à l'aide de la procédure DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE.

    La procédure DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE prend en charge les fichiers partitionnés externes dans les services de stockage d'objet cloud pris en charge. Les informations d'identification sont des propriétés de niveau table. Par conséquent, les fichiers externes doivent se trouver dans la même banque d'objets.

    Exemple :

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

    Les paramètres sont les suivants :

    • table_name : nom de la table externe.

    • credential_name : nom des informations d'identification créées à l'étape précédente.

    • partitioning_clause : clause de partitionnement complète, avec les informations d'emplacement des partitions individuelles.

    • format définit les options que vous pouvez indiquer pour décrire le format du fichier source. format : définit les options que vous pouvez indiquer pour décrire le format du fichier source.

      Si les données de vos fichiers source sont cryptées, déchiffrez-les en indiquant le paramètre format avec l'option encryption. Pour plus d'informations sur le décryptage des données, reportez-vous à Déchiffrement des données lors de l'import à partir d'Object Storage.

    • column_list : liste des définitions de colonne dans les fichiers source, séparées par une virgule.

    Dans cet exemple, namespace-string est l'espace de noms de stockage d'objet Oracle Cloud Infrastructure et bucketname est le nom du bucket. Pour plus d'informations, reportez-vous à Présentation des espaces de noms Object Storage.

    Vous pouvez maintenant exécuter des requêtes sur la table partitionnée externe que vous avez créée à l'étape précédente. Votre instance Autonomous Database tire parti des informations de partitionnement de la table partitionnée externe, ce qui garantit que la requête accède uniquement aux fichiers de données pertinents dans la banque d'objets. Par exemple, la requête suivante lit uniquement les fichiers de données de la partition P1 :

    SELECT * FROM pet1 WHERE col1 < 750;

    Les tables partitionnées externes que vous créez avec DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE incluent deux colonnes invisibles : file$path et file$name. Ces colonnes permettent d'identifier le fichier d'où provient un enregistrement. Pour plus d'informations, reportez-vous à Colonnes de métadonnées de table externe.

    Si des lignes des fichiers source ne correspondent pas aux options de format spécifiées, la requête signale une erreur. Vous pouvez utiliser les paramètres DBMS_CLOUD tels que rejectlimit pour supprimer ces erreurs. Vous pouvez également valider la table partitionnée externe que vous avez créée pour afficher les messages d'erreur et les lignes rejetées afin de pouvoir modifier les options de format en conséquence. Pour plus d'informations, reportez-vous à Modification des données externes et à Modification des données partitionnées externes.

    Pour obtenir des informations détaillées sur les paramètres, reportez-vous à Procédure CREATE_EXTERNAL_PART_TABLE.

    Pour plus d'informations sur les services de stockage d'objet cloud pris en charge, reportez-vous à Formats d'URI DBMS_CLOUD.