Interrogation des données externes
Pour interroger des données dans des fichiers dans le cloud, vous devez d'abord stocker vos informations d'identification de stockage d'objets dans votre base de données Autonomous AI, 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 des données externes dans des systèmes de fichiers joints ou dans le système de fichiers local.
La procédure DBMS_CLOUD.CREATE_EXTERNAL_TABLE prend en charge des fichiers externes dans les services d'objet cloud pris en charge, notamment :
-
Oracle Cloud Infrastructure Object Storage
-
Stockage Azure Blob ou stockage Azure Data Lake
-
Amazon S3
-
Compatible avec Amazon S3, avec Oracle Cloud Infrastructure Object Storage, Google Cloud Storage et Wasabi Hot Cloud Storage.
-
Référentiel GitHub
Le fichier source de 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-
Stockez les informations d'identification de la banque d'objets à l'aide de la procédure
DBMS_CLOUD.CREATE_CREDENTIAL.Par 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 à la banque d'objets Oracle Cloud Infrastructure 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 ressourcesOracle 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 que vous avez stocké les informations d'identification, vous pouvez utiliser le même nom d'informations d'identification pour créer des tables externes.
Reportez-vous à Procédure CREATE_CREDENTIAL pour plus d'informations sur les paramètres
usernameetpasswordpour les différents services de stockage d'objets. -
Créez une table externe sur vos fichiers source à l'aide de la procédure
DBMS_CLOUD.CREATE_EXTERNAL_TABLE.La procédure
DBMS_CLOUD.CREATE_EXTERNAL_TABLEprend en charge des fichiers externes dans les services 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.Par 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 :
-
table_name: nom de la table externe. -
credential_name: nom des informations d'identification créées à l'étape précédente. Le paramètrecredential_namedoit être conforme aux conventions de dénomination des objets Oracle. Pour plus d'informations, reportez-vous à Règles de dénomination des objets de base de données.Le paramètre
credential_namen'est pas utilisé lorsque vous indiquez un répertoire ou une URL de lien hypertexte de table avecfile_uri_list. Pour plus d'informations, reportez-vous à Création et gestion de répertoires sur une base de données d'IA autonome et à A propos des liens hypertexte de table sur une base de données d'IA autonome. -
file_uri_list: liste des fichiers source à interroger séparés par une virgule. -
format: définit les options que vous pouvez indiquer pour décrire le format du fichier source.Si les données contenues dans les fichiers source sont cryptées, décryptez les données en indiquant le paramètre
formatavec l'optionencryption. Pour plus d'informations sur le décryptage des données, reportez-vous à Décryptage 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-stringest l'espace de noms Oracle Cloud Infrastructure Object Storage etbucketnameest le nom du bucket. Pour plus d'informations, reportez-vous à Présentation des espaces de noms Object Storage.Remarque
Remarque : Autonomous AI Database prend en charge divers formats de fichier source, y compris les formats de données compressés. Pour connaître les types de compression pris en charge, reportez-vous à Options de format de package DBMS_CLOUD et à l'option de formatDBMS_CLOUD compression.Vous pouvez maintenant exécuter des requêtes sur la table externe que vous avez créée à l'étape précédente. Par exemple :
SELECT count(*) FROM channels_ext;Par défaut, la base de données attend que toutes les lignes du fichier de données externes soient valides et correspondent aux définitions des types de données cible ainsi qu'à la définition de format des fichiers 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 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 à Validation des données externes.Pour obtenir des informations détaillées sur les paramètres, reportez-vous à la procédure CREATE_EXTERNAL_TABLE.
Pour plus d'informations sur les services de stockage d'objets cloud pris en charge, reportez-vous à Formats d'URI DBMS_CLOUD.
-
Colonnes de métadonnées de table externe
Les métadonnées de table externe vous aident à déterminer d'où proviennent les données lorsque vous exécutez une requête.
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: indique le texte du chemin du fichier jusqu'au début du nom de l'objet. -
file$name: indique le nom de l'objet, y compris tout le texte qui suit le "/" final.
Par 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/genrePour plus d'informations sur les colonnes invisibles, voir Colonnes invisibles.