Interroger des données externes

Pour interroger des données dans des fichiers dans le nuage, vous devez d'abord stocker vos données d'identification de stockage d'objets dans votre base de données d'intelligence artificielle autonome, puis créer une table externe à l'aide de la procédure PL/SQL DBMS_CLOUD.CREATE_EXTERNAL_TABLE.

Vous pouvez également utiliser la procédure DBMS_CLOUD.CREATE_EXTERNAL_TABLE pour interroger les données externes dans les systèmes de fichiers joints ou dans le système de fichiers local.

La procédure DBMS_CLOUD.CREATE_EXTERNAL_TABLE prend en charge les fichiers externes dans les services de stockage d'objets en nuage pris en charge, notamment :

  • Service de stockage d'objets pour Oracle Cloud Infrastructure

  • Stockage Azure Blob ou stockage Azure Data Lake

  • Amazon S3

  • Compatible avec Amazon S3, notamment : Oracle Cloud Infrastructure Object Storage, Google Cloud Storage et Wasabi Hot Cloud Storage.

  • Référentiel GitHub

Le fichier source figurant dans cet exemple, channels.txt, contient les données suivantes :

S,Direct Sales,Direct
T,Tele Sales,Direct
C,Catalog,Indirect
I,Internet,Indirect
P,Partners,Others
  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 externe au-dessus de vos fichiers sources à l'aide de la procédure DBMS_CLOUD.CREATE_EXTERNAL_TABLE.

    La procédure DBMS_CLOUD.CREATE_EXTERNAL_TABLE prend en charge les fichiers 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_TABLE(
        table_name =>'CHANNELS_EXT',
        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 ','),
        column_list => 'CHANNEL_ID VARCHAR2(2), CHANNEL_DESC VARCHAR2(20), CHANNEL_CLASS VARCHAR2(20)' );
    END;
    /
    

    Les paramètres sont les suivants :

    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.

    Note

    Autonomous AI Database prend en charge divers formats de fichier source, notamment les formats de données compressées. Voir Options de format d'ensemble DBMS_CLOUD et l'option de format DBMS_CLOUD compression pour voir les types de compression pris en charge.

    Vous pouvez maintenant exécuter des interrogations sur la table externe que vous avez créée à l'étape précédente. Exemple :

    SELECT count(*) FROM channels_ext;

    Par défaut, la base de données s'attend à ce que toutes les rangées du fichier de données externe soient valides et correspondent à la fois aux définitions de type de données cible et à la définition de format des fichiers. 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 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 pour plus d'informations.

    Pour des informations détaillées sur les paramètres, voir Procédure CREATE_EXTERNAL_TABLE.

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

Colonnes de métadonnées de table externe

Les métadonnées de la table externe vous aident à déterminer d'où proviennent les données lorsque vous effectuez une interrogation.

Les tables externes que vous créez avec DBMS_CLOUD.CREATE_EXTERNAL_TABLE, DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE ou DBMS_CLOUD.CREATE_HYBRID_PART_TABLE incluent deux colonnes invisibles file$path et file$name. Ces colonnes permettent d'identifier le fichier d'où provient un enregistrement.

  • file$path : Spécifie le texte du chemin d'accès au fichier jusqu'au début du nom de l'objet.

  • file$name : Spécifie le nom de l'objet, y compris tout le texte qui suit le dernier "/".

Exemple :

SELECT genre_id, name, file$name, file$path FROM ext_genre
     WHERE rownum <= 2;

genre_id      name        file$name     file$path
--------      ---------   -----------   ----------------------
1             Action      genre.csv     https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/moviestream_gold/o/genre
2             Adventure   genre.csv     https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/moviestream_gold/o/genre

Voir Colonnes invisibles pour plus d'informations sur les colonnes invisibles.