Externe Daten mit Autonomous Database on Dedicated Exadata Infrastructure abfragen
Beschreibt Packages und Tools zum Abfragen und Validieren von Daten mit Autonomous Database on Dedicated Exadata Infrastructure.
Externe Daten werden nicht von der Datenbank verwaltet. Sie können jedoch DBMS_CLOUD
-Prozeduren verwenden, um externe Daten abzufragen. Obwohl Abfragen für externe Daten nicht so schnell wie Abfragen für Datenbanktabellen sind, können Sie mit diesem Ansatz schnell Abfragen für externe Quelldateien und externe Daten ausführen.
Mit DBMS_CLOUD
-Prozeduren können Sie die Daten in den externen Quelldateien für eine externe Tabelle validieren, sodass Sie Probleme erkennen und die Daten in der externen Tabelle korrigieren oder ungültige Daten ausschließen können, bevor Sie die Daten verwenden.
Hinweis:
Wenn Sie nicht denADMIN
-Benutzer verwenden, stellen Sie sicher, dass der Benutzer über die erforderlichen Berechtigungen für die Vorgänge verfügt. Weitere Informationen finden Sie unter Datenbankbenutzerberechtigungen verwalten.
Externe Daten abfragen
Um Daten in Dateien in der Cloud abzufragen, müssen Sie zunächst die Objektspeicherzugangsdaten in der autonomen Datenbank speichern und dann eine externe Tabelle mit der PL/SQL-Prozedur DBMS_CLOUD.CREATE_EXTERNAL_TABLE
erstellen.
Die Quelldatei in diesem Beispiel channels.txt
enthält die folgenden Daten:
S,Direct Sales,Direct
T,Tele Sales,Direct
C,Catalog,Indirect
I,Internet,Indirect
P,Partners,Others
Externe Daten validieren
Zur Validierung einer externen Tabelle verwenden Sie die Prozedur DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
.
Bevor Sie eine externe Tabelle validieren, müssen Sie die externe Tabelle mit der Prozedur DBMS_CLOUD.CREATE_EXTERNAL_TABLE
erstellen. Validieren Sie sie dann mit der Prozedur DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
. Beispiel:
BEGIN
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
(
table_name => 'CHANNELS_EXT' );
END;
/
Diese Prozedur scannt die Quelldateien und validiert sie mit den Formatoptionen, die beim Erstellen der externen Tabelle angegeben wurden.
Bei der Validierung werden standardmäßig alle Zeilen in den Quelldateien gescannt. Der Vorgang wird gestoppt, wenn eine Zeile abgelehnt wird. Wenn Sie nur eine Teilmenge der Zeilen validieren möchten, verwenden Sie den Parameter rowcount
. Wenn der Parameter rowcount
festgelegt ist, scannt der Validierungsvorgang Zeilen und stoppt, wenn eine Zeile abgelehnt wird oder wenn die angegebene Anzahl von Zeilen ohne Fehler validiert wurde.
Beispiel: Der folgende Validierungsvorgang scannt 100 Zeilen und stoppt, wenn eine Zeile abgelehnt wird oder wenn 100 Zeilen ohne Fehler validiert wurden:
BEGIN
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE (
table_name => 'CHANNELS_EXT',
rowcount => 100 );
END;
/
Wenn die Validierung nicht gestoppt werden soll, wenn eine Zeile abgelehnt wird, und Sie alle abgelehnten Zeilen anzeigen möchten, setzen Sie den Parameter stop_on_error
auf FALSE
. In diesem Fall scannt VALIDATE_EXTERNAL_TABLE
alle Zeilen und meldet alle abgelehnten Zeilen.
Wenn Sie nur eine Teilmenge der Zeilen validieren möchten, verwenden Sie den Parameter rowcount
. Wenn rowcount
festgelegt und stop_on_error
auf FALSE
gesetzt ist, scannt der Validierungsvorgang Zeilen und stoppt, wenn die angegebene Anzahl von Zeilen abgelehnt wird oder wenn die angegebene Anzahl von Zeilen ohne Fehler validiert wurde. Beispiel: Im folgenden Beispiel werden 100 Zeilen gescannt. Der Vorgang wird gestoppt, wenn 100 Zeilen abgelehnt oder 100 Zeilen ohne Fehler validiert wurden:
BEGIN
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE (
table_name => 'CHANNELS_EXT',
rowcount => 100,
stop_on_error => FALSE );
END;
/
Ausführliche Informationen zu DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
-Parametern finden Sie unter VALIDATE_EXTERNAL_TABLE-Prozedur.
Informationen zu den Ergebnissen von Validierungsvorgängen in den Tabellen dba_load_operations
und user_load_operations
finden Sie unter Logs für Datenvalidierung anzeigen.
Logs für Datenvalidierung anzeigen
Nachdem Sie eine externe Tabelle validiert haben, können Sie das Ergebnis des Validierungsvorgangs anzeigen, indem Sie eine Tabelle mit Ladevorgängen abfragen:
-
dba_load_operations
: Zeigt alle Validierungsvorgänge an. -
user_load_operations
: Zeigt die Validierungsvorgänge in Ihrem Schema an.
Mit diesen Tabellen können Sie Informationen zur Ladevalidierung anzeigen. Beispiel: Verwenden Sie diese SELECT-Anweisung, um user_load_operations
abzufragen:
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
Wenn Sie diese SQL-Anweisung mit der WHERE
-Klausel in der Spalte TYPE
verwenden, werden alle Ladevorgänge mit dem Typ VALIDATE
angezeigt.
In der Spalte LOGFILE_TABLE
wird der Name der Tabelle angezeigt, die Sie abfragen können, um das Log eines Validierungsvorgangs anzuzeigen. Beispiel: Die folgende Abfrage zeigt das Log für diesen Validierungsvorgang an:
SELECT * FROM VALIDATE$21_LOG;
Die Spalte BADFILE_TABLE
zeigt den Namen der Tabelle an, die Sie abfragen können, um die Zeilen anzuzeigen, in denen Fehler bei der Validierung aufgetreten sind. Beispiel: Die folgende Abfrage zeigt die abgelehnten Datensätze für den oben genannten Validierungsvorgang an:
SELECT * FROM VALIDATE$21_BAD;
Je nach den im Log angezeigten Fehlern und den in BADFILE_TABLE
angezeigten Zeilen können Sie den Fehler beheben, indem Sie die externe Tabelle mit dem Befehl DROP TABLE
löschen und unter Angabe der korrekten Formatoptionen in DBMS_CLOUD.CREATE_EXTERNAL_TABLE
neu erstellen.
Hinweis:
Die TabellenLOGFILE_TABLE
und BADFILE_TABLE
werden für jeden Validierungsvorgang zwei Tage gespeichert und dann automatisch entfernt.