Interrogation de données externes avec Autonomous Database on Dedicated Exadata Infrastructure
Description des packages et des outils permettant d'interroger et de valider des données avec Autonomous Database on Dedicated Exadata Infrastructure.
Les données externes ne sont pas gérées par la base de données, mais vous pouvez utiliser les procédures DBMS_CLOUD
pour interroger ces données externes. Bien que les requêtes sur les données externes ne soient pas aussi rapides que les requêtes sur les tables de base de données, vous pouvez adopter cette approche pour lancer rapidement l'exécution des requêtes sur les fichiers source externes et les données externes.
Vous pouvez utiliser les procédures DBMS_CLOUD
afin de valider les données des fichiers source externes pour une table externe afin de pouvoir identifier les problèmes, et corriger les données de la table externe ou exclure les données non valides avant d'utiliser les données.
Remarques :
Si vous n'utilisez pas l'utilisateurADMIN
, assurez-vous que l'utilisateur dispose des privilèges nécessaires pour les opérations qu'il doit effectuer. Pour plus d'informations, reportez-vous à Gestion des privilèges d'utilisateur de base de données.
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'objet 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
Validation 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 la créer à l'aide de la procédure DBMS_CLOUD.CREATE_EXTERNAL_TABLE
. Utilisez ensuite la procédure DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
pour la valider. Exemple :
BEGIN
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
(
table_name => 'CHANNELS_EXT' );
END;
/
Cette procédure analyse vos fichiers source et les valide à l'aide des options de format spécifiées lors de la création de la table externe.
Par défaut, l'opération de validation analyse toutes les lignes de vos fichiers source et s'arrête lorsqu'une ligne est rejetée. Pour valider uniquement un sous-ensemble de lignes, utilisez le paramètre rowcount
. Lorsque le paramètre rowcount
est défini, l'opération de validation analyse les lignes et s'arrête lorsqu'une ligne est rejetée ou lorsque le nombre de lignes spécifié est validé sans erreur.
Par exemple, l'opération de validation suivante analyse 100 lignes et s'arrête lorsqu'une ligne est rejetée ou lorsque 100 lignes 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 ligne est rejetée et que vous voulez visualiser toutes les lignes rejetées, définissez le paramètre stop_on_error
sur FALSE
. Dans ce cas, VALIDATE_EXTERNAL_TABLE
analyse toutes les lignes et signale toutes les lignes rejetées.
Pour valider uniquement un sous-ensemble de lignes, utilisez le paramètre rowcount
. Lorsque rowcount
est défini et que stop_on_error
est défini sur FALSE
, l'opération de validation analyse les lignes et s'arrête lorsque le nombre de lignes spécifié est rejeté ou lorsque le nombre de lignes spécifié est validé sans erreur. L'exemple suivant analyse 100 lignes et s'arrête lorsque 100 lignes sont rejetées ou lorsque 100 lignes sont validées sans erreur :
BEGIN
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE (
table_name => 'CHANNELS_EXT',
rowcount => 100,
stop_on_error => FALSE );
END;
/
Pour obtenir des informations détaillées sur les paramètres DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
, reportez-vous à Procédure VALIDATE_EXTERNAL_TABLE.
Reportez-vous à Affichage des journaux pour la validation des données pour consulter les résultats des opérations de validation dans les tables dba_load_operations
et user_load_operations
.
Affichage des journaux pour la validation des données
Après avoir validé une table externe, vous pouvez consulter 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 visualiser les informations de validation de chargement. Par exemple, utilisez l'instruction SELECT suivante 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 cette instruction SQL avec la clause WHERE
sur la colonne TYPE
affiche toutes les opérations de chargement de type VALIDATE
.
La colonne LOGFILE_TABLE
indique le nom de la table que vous pouvez interroger pour consulter le journal d'une opération de validation. Par exemple, la requête suivante affiche le journal de l'opération de validation :
SELECT * FROM VALIDATE$21_LOG;
La colonne BADFILE_TABLE
indique le nom de la table que vous pouvez interroger pour consulter les lignes qui ont rencontré des erreurs lors de la validation. Par exemple, la requête suivante affiche les enregistrements rejetés pour l'opération de validation ci-dessus :
SELECT * FROM VALIDATE$21_BAD;
En fonction des erreurs affichées dans le journal et des lignes 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 avec les options de format correctes dans DBMS_CLOUD.CREATE_EXTERNAL_TABLE
.
Remarques :
Les tablesLOGFILE_TABLE
et BADFILE_TABLE
sont stockées pendant deux jours pour chaque opération de validation, puis enlevées automatiquement.