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

Si vous souhaitez interroger plusieurs fichiers de données dans le magasin d'objets en tant que table externe unique et que les fichiers peuvent être représentés en tant que plusieurs partitions logiques, il est fortement recommandé d'utiliser une table partitionnée externe. L'utilisation d'une table partitionnée externe préserve le partitionnement logique de vos fichiers de données pour l'accès aux interrogations. Utilisez la procédure DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE pour créer une table partitionnée externe.

Il existe deux façons de créer une table partitionnée externe sur Autonomous AI Database :

  • La première version est pour. Voir Interroger les données partitionnées externes avec l'organisation du fichier source au format Hive pour plus d'informations sur ce type d'utilisation de table partitionnée externe.

  • 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 incluez dépend des fichiers de données dans le Cloud et du type de partitionnement que vous utilisez. La présente section décrit ce type d'utilisation de table partitionnée externe.

  1. Stockez vos données d'identification de magasin 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 de données d'identification pour accéder au magasin d'objets Oracle Cloud Infrastructure n'est pas requise si vous activez les données d'identification du principal de ressource. Pour plus d'informations, voir Utiliser un principal de ressource pour accéder aux ressources Oracle Cloud Infrastructure.

    Cette opération stocke les données d'identification dans la base de données dans un format chiffré. Vous pouvez utiliser n'importe quel nom pour le nom des données d'identification. Notez que cette étape n'est requise qu'une seule fois, sauf si les données d'identification du magasin d'objets changent. Une fois les données d'identification stockées, vous pouvez utiliser le même nom pour créer des tables externes.

    Voir Procédure CREATE_CREDENTIAL pour plus d'informations sur les paramètres username et password pour différents services de stockage d'objets.

  2. Créez une table partitionnée externe au-dessus de vos fichiers sources à 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'objets en nuage pris en charge. Les informations d'identification sont une propriété de niveau table. Par conséquent, les fichiers externes doivent se trouver dans le même magasin 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 données d'identification créées à l'étape précédente.

    • partitioning_clause : Clause de partitionnement complète, y compris les informations d'emplacement pour les partitions individuelles.

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

      Si les données de vos fichiers sources sont chiffrées, déchiffrez les données en spécifiant le paramètre format avec l'option encryption. Voir Décrypter les données lors de l'importation à partir du stockage d'objets pour plus d'informations sur le déchiffrement des données.

    • column_list : Liste délimitée par des virgules des définitions de colonne dans les fichiers sources.

    Dans cet exemple, namespace-string est l'espace de noms du stockage d'objets pour Oracle Cloud Infrastructure et bucketname est le nom du seau. Pour plus d'informations, voir Présentation des espaces de noms du stockage d'objets.

    Vous pouvez maintenant exécuter des interrogations sur la table partitionnée externe que vous avez créée à l'étape précédente. Votre base de données Autonomous AI Database tire parti des informations de partitionnement de votre table partitionnée externe, en s'assurant que l'interrogation accède uniquement aux fichiers de données pertinents du magasin d'objets. Par exemple, l'interrogation 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, voir Colonnes de métadonnées de table externe.

    Si des rangées des fichiers sources ne correspondent pas aux options de format que vous avez spécifiées, l'interrogation 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 voir les messages d'erreur et les rangées rejetées afin de pouvoir modifier les options de format en conséquence. Voir Valider les données externes et Valider les données partitionnées externes pour plus d'informations.

    Voir Procédure CREATE_EXTERNAL_PART_TABLE pour des informations détaillées sur les paramètres.

    Pour plus d'informations sur les services de stockage d'objets en nuage pris en charge, voir Formats d'URI DBMS_CLOUD.