Interroger des données externes avec Autonomous Database sur une infrastructure Exadata dédiée
Décrit les ensembles et les outils pour interroger et valider les données avec Autonomous Database sur une infrastructure Exadata dédiée.
Les données externes ne sont pas gérées par la base de données; toutefois, vous pouvez utiliser les procédures DBMS_CLOUD
pour interroger vos données externes. Bien que les interrogations sur des données externes ne soient pas aussi rapides que les interrogations sur des tables de base de données, vous pouvez utiliser cette approche pour commencer rapidement à exécuter des interrogations sur vos fichiers sources externes et vos données externes.
Vous pouvez utiliser les procédures DBMS_CLOUD
pour valider les données des fichiers sources externes d'une table externe afin de pouvoir identifier les problèmes et corriger les données dans la table externe ou exclure les données non valides avant d'utiliser les données.
Note :
Si vous n'utilisez pas l'utilisateurADMIN
, assurez-vous que l'utilisateur dispose des privilèges nécessaires pour les opérations que l'utilisateur doit effectuer. Pour plus d'informations, voir Gérer les privilèges d'utilisateur de base de données.
Interroger des données externes
Pour interroger les données de fichiers en nuage, vous devez d'abord stocker les données d'identification du stockage d'objets dans votre base de données autonome, puis créer une table externe à l'aide de la procédure PL/SQL DBMS_CLOUD.CREATE_EXTERNAL_TABLE
.
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
Valider des données externes
Pour valider une table externe, utilisez la procédure DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
.
Avant de valider une table externe, vous devez créer celle-ci à l'aide de la procédure DBMS_CLOUD.CREATE_EXTERNAL_TABLE
. Utilisez ensuite la procédure DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
pour valider la table. Par exemple :
BEGIN
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
(
table_name => 'CHANNELS_EXT' );
END;
/
Cette procédure balaye vos fichiers sources et les valide à l'aide des options de format indiquées lors de la création de la table externe.
Par défaut, l'opération de validation balaye toutes les lignes des fichiers sources et s'arrête lorsqu'une ligne est rejetée. Pour valider uniquement un sous-ensemble de rangées, utilisez le paramètre rowcount
. Lorsque le paramètre rowcount
est défini, l'opération de validation balaye les rangées et s'arrête, soit lorsqu'une rangée est rejetée, soit lorsque le nombre spécifié de rangées est validé sans erreur.
Par exemple, l'opération de validation suivante analyse 100 rangées et s'arrête lorsqu'une rangée est rejetée ou lorsque 100 rangées sont validées sans erreur :
BEGIN
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE (
table_name => 'CHANNELS_EXT',
rowcount => 100 );
END;
/
Si vous ne voulez pas que la validation s'arrête lorsqu'une rangée est rejetée et que vous voulez voir toutes les rangées rejetées, réglez le paramètre stop_on_error
à FALSE
. Dans ce cas, VALIDATE_EXTERNAL_TABLE
balaye toutes les rangées et signale toutes les rangées rejetées.
Pour valider uniquement un sous-ensemble de rangées, utilisez le paramètre rowcount
. Lorsque rowcount
est défini et que stop_on_error
est réglé à FALSE
, l'opération de validation balaye les rangées et s'arrête, soit lorsque le nombre spécifié de rangées est rejeté, soit lorsque le nombre spécifié de rangées est validé sans erreur. Par exemple, l'exemple suivant balaye 100 rangées et s'arrête lorsque 100 rangées sont rejetées ou lorsque 100 rangées sont validées sans erreur :
BEGIN
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE (
table_name => 'CHANNELS_EXT',
rowcount => 100,
stop_on_error => FALSE );
END;
/
Voir Procédure VALIDATE_EXTERNAL_TABLE pour des informations détaillées sur les paramètres de DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
.
Reportez-vous à Voir les journaux pour la validation de données pour consulter les résultats des opérations de validation dans les tables dba_load_operations
et user_load_operations
.
Voir les journaux pour la validation de données
Après avoir validé une table externe, vous pouvez voir le résultat de l'opération de validation en interrogeant une table d'opérations de chargement :
-
dba_load_operations
: Affiche toutes les opérations de validation. -
user_load_operations
: Affiche les opérations de validation dans votre schéma.
Vous pouvez utiliser ces tables pour consulter les données de validation de chargement. Par exemple, utilisez l'énoncé SELECT suivant pour interroger user_load_operations
:
SELECT table_name,owner_name,type,status,start_time,update_time,logfile_table,badfile_table
FROM user_load_operations
WHERE type = 'VALIDATE';
TABLE_NAME OWNER_NAME TYPE STATUS START_TIME UPDATE_TIME LOGFILE_TABLE BADFILE_TABLE
------------- ---------- ---------- ---------- -------------- ------------- --------------- ---------------
CHANNELS_EXT SH VALIDATE COMPLETED 13-NOV-17... 13-NOV-17... VALIDATE$21_LOG VALIDATE$21_BAD
L'utilisation de cet énoncé SQL avec la clause WHERE
dans la colonne TYPE
affiche toutes les opérations de chargement de type VALIDATE
.
La colonne LOGFILE_TABLE
affiche le nom de la table que vous pouvez interroger pour consulter le journal d'une opération de validation. Par exemple, l'interrogation suivante affiche le journal de cette opération de validation :
SELECT * FROM VALIDATE$21_LOG;
La colonne BADFILE_TABLE
affiche le nom de la table que vous pouvez interroger pour voir les rangées où des erreurs se sont produites lors de la validation. Par exemple, l'interrogation suivante affiche les enregistrements rejetés pour l'opération de validation ci-dessus :
SELECT * FROM VALIDATE$21_BAD;
Selon les erreurs présentes dans le journal et les rangées affichées dans BADFILE_TABLE
, vous pouvez corriger l'erreur en supprimant la table externe à l'aide de la commande DROP TABLE
et en la recréant en spécifiant les options de format correctes dans DBMS_CLOUD.CREATE_EXTERNAL_TABLE
.
Note :
Les tablesLOGFILE_TABLE
et BADFILE_TABLE
sont stockées pendant deux jours pour chaque opération de validation, puis supprimées automatiquement.