DBMS_CLOUD - Unterstützung für Avro, ORC und Parquet

In diesem Abschnitt wird die Unterstützung von DBMS_CLOUD für Avro, ORC und Parquet beschrieben, die mit Autonomous Database bereitgestellt wird.

DBMS_CLOUD-Package - Formatoptionen für Avro, ORC oder Parquet

Das Formatargument in DBMS_CLOUD gibt das Format der Quelldateien an.

Es gibt zwei Möglichkeiten, das Argument format anzugeben:

format => '{"format_option" : “format_value” }'  

Und:

format => json_object('format_option' value 'format_value'))

Beispiele:

format => json_object('type' VALUE 'CSV')

Um mehrere Formatoptionen anzugeben, trennen Sie die Werte durch ",".

Beispiel:

format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true')
Formatoption Beschreibung Syntax

regexuri

Wenn der Wert von regexuri auf TRUE gesetzt ist, können Sie Platzhalter sowie reguläre Ausdrücke in den Dateinamen in Cloud-Quelldatei-URIs verwenden.

Die Zeichen "*" und "?" werden als Platzhalterzeichen betrachtet, wenn der Parameter regexuri auf FALSE gesetzt ist. Wenn der Parameter regexuri auf TRUE gesetzt ist, sind die Zeichen "*" und "?" Teil des angegebenen regulären Ausdrucksmusters.

Normale Ausdrucksmuster werden nur für den Dateinamen oder Unterordnerpfad in Ihren URIs unterstützt, und der Musterabgleich ist mit dem der Funktion REGEXP_LIKE identisch. Muster regulärer Ausdrücke werden für Verzeichnisnamen nicht unterstützt.

Bei externen Tabellen wird diese Option nur mit den Tabellen unterstützt, die in einer Datei im Object Storage erstellt werden.

Beispiel:

format => JSON_OBJECT('regexuri' value TRUE)

Weitere Informationen zur Bedingung REGEXP_LIKE finden Sie unter REGEXP_LIKE-Bedingung in der Oracle Database 19c SQL Language Reference oder in der Oracle Database 23ai SQL Language Reference.

regexuri: True

Standardwert:False

type

Gibt den Dateityp an.

type : avro | orc | parquet

schema

Wenn das Schema auf first oder all gesetzt ist, werden die externen Tabellenspalten und Datentypen automatisch aus den Metadaten der Dateien im Format Avro, ORC oder Parquet abgeleitet.

Die Spaltennamen entsprechen denen in Avro, ORC oder Parquet. Die Datentypen von Avro, ORC oder Parquet werden in Oracle-Datentypen konvertiert. Alle Spalten werden der Tabelle hinzugefügt.

Der Wert first gibt an, dass die Metadaten der ersten Datei vom Typ Avro, ORC oder Parquet in file_uri_list verwendet werden, um die Spalten und ihre Datentypen automatisch zu generieren. Verwenden Sie first, wenn alle Dateien dasselbe Schema aufweisen.

Der Wert all gibt an, dass die Metadaten aller Dateien vom Typ Avro, ORC oder Parquet in file_uri_list verwendet werden, um die Spalten und deren Datentypen automatisch zu generieren. Verwenden Sie all (langsamer), wenn die Dateien unterschiedliche Schemas aufweisen können.

Standard: Wenn column_list angegeben ist, wird der Wert schema ignoriert, sofern angegeben. Wenn column_list nicht angegeben ist, hatschema den Standardwert first.

Hinweis: Bei Dateien im Format Avro, ORC oder Parquet ist die Formatoption schema nicht verfügbar, und der Parameter column_list muss für partitionierte externe Tabellen mit der Prozedur DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE angegeben werden.

schema: first | all

DBMS_CLOUD-Package - Datentypzuordnung von Avro zu Oracle

Beschreibt die Zuordnung von Avro-Datentypen zu Oracle-Datentypen.

Hinweis:

Komplexe Typen wie Maps, Arrays und Structs werden ab Oracle Database 19c unterstützt. Informationen zur Verwendung von komplexen Avro-Typen finden Sie unter DBMS_CLOUD Package Avro, ORC und Parquet.
Avro-Typ Oracle-spezifischer Typ
INT NUMBER(10)
LONG ANZAHL(19)
BOOT ANZAHL(1)
UTF8 BYTE_ARRAY RAW(2000)
FLT BINARY_FLOAT
DBL BINARY_DOUBLE
DEZIMAL(p) ZAHL(p)
DEZIMAL(p,s) NUMBER(p,s)
DATE DATE
STRING VARCHAR2
TIME_MILLIS VARCHAR2(20 BYTE)
TIME_MICROS VARCHAR2(20 BYTE)
TIMESTAMP_MILLIS TIMESTAMP(3)
TIMESTAMP_MICROS TIMESTAMP(6)
ENUM VARCHAR2(n) Dabei gilt: "n" ist die tatsächliche maximale Länge der möglichen Werte für AVRO ENUM.
DURATION RAW(2000)
FIXED RAW(2000)
NULL VARCHAR2(1) BYTE

Informationen zur Verwendung von komplexen Avro-Typen finden Sie unter DBMS_CLOUD-Package - Komplexe Avro-, ORC- und Parquet-Typen.

DBMS_CLOUD-Package - Datentypzuordnung von ORC zu Oracle

Beschreibt die Zuordnung von ORC-Datentypen zu Oracle-Datentypen.

Informationen zur Verwendung von komplexen ORC-Typen finden Sie unter DBMS_CLOUD-Package - Komplexe Avro-, ORC- und Parquet-Typen.

ORC-Typ Oracle-spezifischer Typ Weitere Informationen
Array VARCHAR2(n) (JSON-Format) DBMS_CLOUD-Package - Komplexe Avro-, ORC- und Parquet-Typen
bigint (64 Bit) ANZAHL(19)  
binär BLOB  
boolean (1 Bit) ANZAHL(1)  
char CHAR(n)  
Datum DATE  
double (Double-Datentyp) BINARY_DOUBLE  
Fließkomma BINARY_FLOAT  
int (32 Bit) NUMBER(10)  
Liste VARCHAR2(n) (JSON-Format) DBMS_CLOUD-Package - Komplexe Avro-, ORC- und Parquet-Typen
Map VARCHAR2(n) (JSON-Format) DBMS_CLOUD-Package - Komplexe Avro-, ORC- und Parquet-Typen
smallint (16 Bit) ANZAHL(5)  
string (Zeichenfolgendatentyp) VARCHAR2(4000)  
struct VARCHAR2(n) (JSON-Format) DBMS_CLOUD-Package - Komplexe Avro-, ORC- und Parquet-Typen
Zeitstempel TIMESTAMP  
tinyint (8 Bit) ANZAHL(3)  
Gewerkschaft VARCHAR2(n) (JSON-Format) DBMS_CLOUD-Package - Komplexe Avro-, ORC- und Parquet-Typen
varchar VARCHAR2(n)  

DBMS_CLOUD-Package - Datentypzuordnung von Parquet zu Oracle

Beschreibt die Zuordnung von Parquet-Datentypen zu Oracle-Datentypen.

Hinweis:

Komplexe Typen wie Maps, Arrays und Structs werden ab Oracle Database 19c unterstützt. Informationen zur Verwendung von komplexen Parquet-Typen finden Sie unter DBMS_CLOUD-Package - Komplexe Avro-, ORC- und Parquet-Typen.
Parquet-Typ Oracle-spezifischer Typ
UINT_64 ANZAHL(20)
INT_64 ANZAHL(19)
UINT_32 NUMBER(10)
INT_32 NUMBER(10)
UINT_16 ANZAHL(5)
INT_16 ANZAHL(5)
UINT_8 ANZAHL(3)
INT_8 ANZAHL(3)
BOOT ANZAHL(1)
UTF8 BYTE_ARRAY VARCHAR2(4000 BYTE)
FLT BINARY_FLOAT
DBL BINARY_DOUBLE
DEZIMAL(p) ZAHL(p)
DEZIMAL(p,s) NUMBER(p,s)
DATE DATE
STRING VARCHAR2(4000)
TIME_MILLIS VARCHAR2(20 BYTE)
TIME_MILLIS_UTC VARCHAR2(20 BYTE)
TIME_MICROS VARCHAR2(20 BYTE)
TIME_MICROS_UTC VARCHAR2(20 BYTE)
TIMESTAMP_MILLIS TIMESTAMP(3)
TIMESTAMP_MILLIS_UTC TIMESTAMP(3)
TIMESTAMP_MICROS TIMESTAMP(6)
TIMESTAMP_MICROS_UTC TIMESTAMP(6)
TIMESTAMP_NANOS TIMESTAMP(9)

Informationen zur Verwendung von komplexen Parquet-Typen finden Sie unter DBMS_CLOUD-Package - Komplexe Avro-, ORC- und Parquet-Typen.

DBMS_CLOUD-Package - Datentypzuordnung von Oracle zu Parquet

Beschreibung der Zuordnung von Oracle-Datentypen zu Parquet-Datentypen.

Oracle-spezifischer Typ Parquet-Typ
BINARY_DOUBLE DBL
BINARY_FLOAT FLT
DATE DATE
NUMBER(p,s) DEZIMAL(p,s)
ZAHL(p) DEZIMAL(p)
TIMESTAMP(3) TIMESTAMP_MILLIS
TIMESTAMP(3) TIMESTAMP_MILLIS_UTC
TIMESTAMP(6) TIMESTAMP_MICROS
TIMESTAMP(6) TIMESTAMP_MICROS_UTC
TIMESTAMP(9) TIMESTAMP_NANOS
VARCHAR2(4000) STRING

NLS-Sessionparameter

Die NLS-Sessionparameter NLS_DATE_FORMAT, NLS_TIMESTAMP_FORMAT, NLS_TIMESTAMP_TZ_FORMAT und NLS_NUMERIC_CHARACTERS definieren, wie Datum, Zeitstempel, Zeitstempel mit Zeitzonenformat und Radixtrennzeichen für Zeitstempel mit Dezimalzeichen angezeigt werden sollen, wenn eine Tabelle mit diesen Spaltentypen abgefragt wird.

Wenn Sie Daten mit DBMS_CLOUD.EXPORT_DATA exportieren und die Parquet-Ausgabe angeben, liest Autonomous Database außerdem die Werte dieser Parameter aus der Tabelle NLS_SESSION_PARAMETERS. Autonomous Database verwendet diese Werte, um die Oracle-Datentypen DATE oder TIMESTAMP in Parquet-Typen zu konvertieren.

Die NLS_SESSION_PARAMETERS-Parameter unterstützen eine RR-Formatmaske (zwei-Zeichen-Jahresangabe).

Die Formatmaske RR für das Jahr wird für diese Parameter nicht unterstützt, wenn Sie Daten mit DBMS_CLOUD.EXPORT_DATA in Parquet exportieren. Ein Anwendungsfehler wird ausgelöst, wenn Sie versuchen, nach Parquet zu exportieren, und NLS_SESSION_PARAMETERS so eingestellt ist, dass die Formatmaske RR verwendet wird (der Standardwert für das Format RR hängt vom Wert des Parameters NLS_TERRITORY ab).

Wenn einer der Parameter NLS_DATE_FORMAT, NLS_TIMESTAMP_FORMAT oder NLS_TIMESTAMP_TZ_FORMAT die Formatmaske RR verwendet, müssen Sie den Formatwert in einen unterstützten Wert ändern, um Daten mit DBMS_CLOUD.EXPORT_DATA in Parquet zu exportieren. Beispiel:

ALTER SESSION SET NLS_DATE_FORMAT = "MM/DD/YYYY";
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH:MI:SS.FF';
ALTER SESSION SET  NLS_TIMESTAMP_TZ_FORMAT='YYYY-MM-DD HH:MI:SS.FF TZH:TZM';
Nachdem Sie den Wert geändert haben, können Sie die Änderung prüfen, indem Sie die View NLS_SESSION_PARAMETERS abfragen:
SELECT value FROM NLS_SESSION_PARAMETERS 
       WHERE parameter IN ('NLS_DATE_FORMAT','NLS_TIMESTAMP_FORMAT','NLS_TIMESTAMP_TZ_FORMAT');

Wenn NLS_DATE_FORMAT festgelegt ist, gilt es für die Spalten mit dem Datentyp DATE. Wenn NLS_TIMESTAMP_FORMAT festgelegt ist, gilt es für die Spalten mit dem Datentyp TIMESTAMP. Wenn NLS_TIMESTAMP_TZ_FORMAT festgelegt ist, gilt es für die Spalten mit dem Datentyp TIMESTAMP WITH TIME ZONE.

Weitere Informationen finden Sie unter Date and Time Parameters in der Dokumentation Oracle Database 19c Database Globalization Support Guide oder Oracle Database 23ai Database Globalization Support Guide und NLS Data Dictionary Views in der Dokumentation Oracle Database 19c Database Globalization Support Guide oder in der Dokumentation Oracle Database 23ai Database Globalization Support Guide.

DBMS_CLOUD-Package - Komplexe Avro-, ORC- und Parquet-Typen

Beschreibt die Zuordnung komplexer Avro-, ORC- und Parquet-Datentypen zu Oracle-Datentypen.

Autonomous Database unterstützt komplexe Datentypen, darunter:

  • struct

  • Liste

  • Map

  • Gewerkschaft

  • Array

Wenn Sie den Quelldateityp Avro, ORC oder Parquet angeben und die Quelldatei komplexe Spalten enthält, geben Autonomous Database-Abfragen JSON für die komplexen Spalten zurück. Dies vereinfacht die Verarbeitung von Abfrageergebnissen, da Sie die leistungsstarken JSON-Parsingfeatures von Oracle konsistent für alle Datei- und Datentypen verwenden können. In der folgenden Tabelle wird das Format für die komplexen Typen in Autonomous Database angezeigt:

Hinweis:

Die komplexen Felder werden VARCHAR2-Spalten zugeordnet, und es gelten VARCHAR2-Größe-Limits.
Typ Parquet ORC Avro Oracle
Liste: Wertsequenz Liste Liste Array VARCHAR2 (JSON-Format)
Map: Liste von Objekten mit einem einzelnen Schlüssel Zuordnen Zuordnen Zuordnen VARCHAR2 (JSON-Format)
Vereinigungsmenge: Werte unterschiedlichen Typs Nicht verfügbar Union Union VARCHAR2 (JSON-Format)
Objekt: Null oder mehr Schlüssel/Wert-Paare Struct Struct Datensatz VARCHAR2 (JSON-Format)

Wenn Ihre ORC-, Parquet- oder Avro-Quelldateien komplexe Typen enthalten, können Sie die JSON-Ausgabe für diese allgemeinen komplexen Typen abfragen. Beispiel: Im Folgenden wird eine ORC-Datei movie-info.orc mit einem komplexen Typ angezeigt (die gleiche komplexe Typbehandlung gilt für Parquet- und Avro-Quelldateien).

Betrachten wir die Datei movie-info.orc mit dem folgenden Schema:

id    int
original_title string
overview       string
poster_path    string
release_date   string
vote_count     int
runtime        int
popularity     double
genres         array<struct<id:int,name:string>

Beachten Sie, dass jeder Film mit dem Array genres nach mehreren genres kategorisiert wird. Das genres-Array ist ein array von structs, und jedes Element hat eine id (int) und einen name (string). Das Array genres wird als komplexer Typ betrachtet. Sie können wie folgt eine Tabelle für diese ORC-Datei mit DBMS_CLOUD.CREATE_EXTERNAL_TABLE erstellen:

BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
        table_name =>'movie_info',
        credential_name =>'OBJ_STORE_CRED',
        file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/mytenancy/b/movies/o/movie-info.orc',
        format => '{"type":"orc", "schema": "first"}');
END;
/

Wenn Sie die externe Tabelle erstellen, generiert die Datenbank automatisch die Spalten basierend auf dem Schema in der ORC-Datei (wenn Sie Avro oder Parquet verwenden, gilt dasselbe). In diesem Beispiel erstellt DBMS_CLOUD.CREATE_EXTERNAL_TABLE wie folgt eine Tabelle in Ihrer Datenbank:

CREATE TABLE "ADMIN"."MOVIE_INFO" 
    ( "ID"
      NUMBER(10,0), 
      "ORIGINAL_TITLE"  VARCHAR2(4000 BYTE) COLLATE "USING_NLS_COMP", 
      "OVERVIEW"        VARCHAR2(4000 BYTE) COLLATE "USING_NLS_COMP", 
      "POSTER_PATH"     VARCHAR2(4000 BYTE) COLLATE "USING_NLS_COMP", 
      "RELEASE_DATE"    VARCHAR2(4000 BYTE) COLLATE "USING_NLS_COMP", 
      "VOTE_COUNT"      NUMBER(10,0), 
      "RUNTIME"         NUMBER(10,0), 
      "POPULARITY"      BINARY_DOUBLE, 
      "GENRES"          VARCHAR2(4000 BYTE) COLLATE "USING_NLS_COMP"
    )  DEFAULT COLLATION "USING_NLS_COMP"
    ORGANIZATION EXTERNAL 
     ( TYPE      ORACLE_BIGDATA
       DEFAULT DIRECTORY "DATA_PUMP_DIR"
       ACCESS PARAMETERS
       ( com.oracle.bigdata.credential.name=OBJ_STORE_CRED
         com.oracle.bigdata.fileformat=ORC
   )
       LOCATION
        (
      'https://objectstorage.us-phoenix-1.oraclecloud.com/n/mytenancy/b/movies/o/movie-info.orc'
           )
     )
   REJECT LIMIT UNLIMITED 
   PARALLEL;
 )

Jetzt können Sie die Filmdaten abfragen:

SELECT original_title, release_date, genres 
     FROM movie_info 
     WHERE release_date > '2000'
     ORDER BY original_title;

Dadurch wird folgende Ausgabe erzeugt:


original_title              release_date   genres
(500) Days of Summer        2009           [{"id":3,"name":"Drama"},{"id":6,"name":"Comedy"},{"id":17,"name":"Horror"},{"id":19,"name":"Western"},{"id":18,"name":"War"},{"id":15,"name":"Romance"}]
10,000 BC                   2008           [{"id":6,"name":"Comedy"}]
11:14                       2003           [{"id":9,"name":"Thriller"},{"id":14,"name":"Family"}]
127 Hours                   2010           [{"id":6,"name":"Comedy"},{"id":3,"name":"Drama"}]
13 Going on 30              2004           [{"id":6,"name":"Comedy"},{"id":3,"name":"Drama"},{"id":18,"name":"War"},{"id":15,"name":"Romance"}]
1408                        2007           [{"id":45,"name":"Sci-Fi"},{"id":6,"name":"Comedy"},{"id":17,"name":"Horror"},{"id":6,"name":"Comedy"},{"id":18,"name":"War"}]

Beachten Sie, dass der komplexe Typ genres als JSON-Array zurückgegeben wird.

Um die JSON-Daten noch besser nutzen zu können, können Sie die Spalte mit den JSON-Funktionen von Oracle transformieren. Beispiel: Sie können die JSON-Punktnotation (".") sowie die leistungsstärkeren Transformationsfunktionen wie JSON_TABLE verwenden.

Informationen zur "."-Notation finden Sie unter Simple Dot-Notation Access to JSON Data in der Oracle Database 19c JSON Developer's Guide oder im Oracle Database 23ai JSON Developer's Guide.

Informationen zu JSON_TABLE finden Sie unter SQL/JSON-Funktion JSON_TABLE in der Dokumentation Oracle Database 19c JSON Developer's Guide oder im Oracle Database 23ai JSON Developer's Guide.

Das folgende Beispiel zeigt eine Abfrage in der Tabelle, die jeden Wert des Arrays in eine Zeile in der Ergebnismenge umwandelt:
SELECT original_title, release_date, m.genre_name, genres
    FROM movie_info mi,
       JSON_TABLE(mi.genres, '$.name[*]'
        COLUMNS (genre_name VARCHAR2(25) PATH
      '$')                 
                 ) AS m
 WHERE rownum < 10;

JSON_TABLE erstellt eine Zeile für jeden Wert des Arrays, wie bei einem Outer Join, und "struct" wird geparst, um den Namen des Genres zu extrahieren. Dadurch wird folgende Ausgabe erzeugt:


original_title                   release_date         genre_name        genres
(500) Days of Summer             2009                 Drama             [{"id":3,"name":"Drama"},{"id":6,"name":"Comedy"},
                                                                        {"id":17,"name":"Horror"},{"id":19,"name":"Western"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
(500) Days of Summer             2009                 Comedy            [{"id":3,"name":"Drama"},{"id":6,"name":"Comedy"},
                                                                        {"id":17,"name":"Horror"},{"id":19,"name":"Western"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
(500) Days of Summer             2009                 Horror            [{"id":3,"name":"Drama"},{"id":6,"name":"Comedy"},
                                                                        {"id":17,"name":"Horror"},{"id":19,"name":"Western"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
(500) Days of Summer             2009                 Western           [{"id":3,"name":"Drama"},{"id":6,"name":"Comedy"},
                                                                        {"id":17,"name":"Horror"},{"id":19,"name":"Western"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
(500) Days of Summer             2009                 War               [{"id":3,"name":"Drama"},{"id":6,"name":"Comedy"},
                                                                        {"id":17,"name":"Horror"},{"id":19,"name":"Western"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
(500) Days of Summer             2009                 Romance           [{"id":3,"name":"Drama"},{"id":6,"name":"Comedy"},
                                                                        {"id":17,"name":"Horror"},{"id":19,"name":"Western"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
10,000 BC                        2008                 Comedy            [{"id":6,"name":"Comedy"}]
11:14                            2003                 Family            [{"id":9,"name":"Thriller"},{"id":14,"name":"Family"}]
11:14                            2003                 Thriller          [{"id":9,"name":"Thriller"},{"id":14,"name":"Family"}]
127 Hours                        2010                 Comedy            [{"id":6,"name":"Comedy"},{"id":3,"name":"Drama"}]
127 Hours                        2010                 Drama             [{"id":6,"name":"Comedy"},{"id":3,"name":"Drama"}]
13 Going on 30                   2004                 Romance           [{"id":6,"name":"Comedy"},{"id":3,"name":"Drama"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
13 Going on 30                   2004                 Comedy            [{"id":6,"name":"Comedy"},{"id":3,"name":"Drama"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
13 Going on 30                   2004                 War               [{"id":6,"name":"Comedy"},{"id":3,"name":"Drama"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]
13 Going on 30                   2004                 Drama             [{"id":6,"name":"Comedy"},{"id":3,"name":"Drama"},
                                                                        {"id":18,"name":"War"},{"id":15,"name":"Romance"}]

DBMS_CLOUD-Package - Spaltennamenszuordnung von Avro, ORC und Parquet zu Oracle

Beschreibt Regeln für die Konvertierung der Avro-, ORC- und Parquet-Spaltennamen in Oracle-Spaltennamen.

Die folgenden Elemente werden bei Avro-, ORC- und Parquet-Spaltennamen unterstützt. Möglicherweise müssen Sie für Oracle SQL-Referenzen in externen Tabellen jedoch doppelte Anführungszeichen verwenden. Um die Verwendung zu vereinfachen und zu vermeiden, dass beim Referenzieren von Spaltennamen doppelte Anführungszeichen verwendet werden müssen, vermeiden Sie daher in Avro-, ORC- und Parquet-Spaltennamen nach Möglichkeit die Verwendung von Folgendem:

  • Eingebettete Leerzeichen

  • Vorangestellte Zahlen

  • Vorangestellte Unterstriche

  • Reservierte Oracle SQL-Wörter

Die folgende Tabelle zeigt verschiedene Typen von Avro-, ORC- und Parquet-Spaltennamen sowie Regeln für ihre Verwendung in Oracle-Spaltennamen in externen Tabellen.

Avro-, ORC- oder Parquet-Name CREATE TABLE-Name Oracle-KATALOG Gültige SQL Hinweise:
part, Part oder PART Teil, Teil, Teil Teil

select part

select Part

select paRt

select PART

Oracle setzt Spaltennamen ohne Anführungszeichen implizit in Großbuchstaben
Auftragsnr. "Anforderung Nr." Auftragsnr. select "Ord No" Doppelte Anführungszeichen sind erforderlich, wenn Leerzeichen eingebettet sind, wodurch auch die Groß-/Kleinschreibung beibehalten wird
__index_key__ "__index_key__" __index_key__ select "__index_key__" Doppelte Anführungszeichen sind erforderlich, wenn ein Unterstrich vorangestellt ist, wodurch auch die Groß-/Kleinschreibung beibehalten wird
6Way "6Way" 6Way select "6Way" Doppelte Anführungszeichen sind erforderlich, wenn eine numerische Ziffer vorangestellt ist, wodurch auch die Groß-/Kleinschreibung beibehalten wird
create, Create oder CREATE usw. (beliebige Kombination aus Groß-/Kleinbuchstaben); partition, Partition, PARTITION usw. (für ein reserviertes Oracle-Wort) "CREATE"-PARTITION PARTITION ERSTELLEN

select "CREATE"

select "PARTITION"

Für reservierte Oracle SQL-Wörter sind doppelte Anführungszeichen erforderlich. Ihre Großschreibung wird erzwungen, sie müssen jedoch immer in doppelte Anführungszeichen gesetzt werden, wenn sie in SQL verwendet werden
ROWID, ROWID, ROWid usw. (siehe Hinweise zu ROWID) Zeilen-ID  

select "rowid"

select "Rowid"

select "ROWid"

select "rowid"

Bei ROWID behält jede Variante aus Kleinbuchstaben oder einer Kombination von Groß-/Kleinbuchstaben die Groß-/Kleinschreibung bei und muss immer mit der genauen Ausgangsschreibweise in doppelte Anführungszeichen gesetzt werden. Wenn Sie eine ROWID in Großbuchstaben angeben, wird sie aufgrund des inhärenten Konflikts mit der Oracle ROWID für die Tabelle automatisch als "ROWID" in Kleinbuchstaben gespeichert und muss bei der Referenzierung immer in Anführungszeichen gesetzt werden.

Hinweise:

  • Im Allgemeinen kann ein Spaltenname in einer externen Tabelle ohne doppelte Anführungszeichen referenziert werden.

  • Sofern in den Spaltennamen kein Leerzeichen eingebettet oder ihm ein Unterstrich ("_") oder eine numerische Ziffer ("0" bis "9") vorangestellt ist, wird die ursprüngliche Groß-/Kleinschreibung des Spaltennamens beibehalten. Der Spaltenname muss immer mit der ursprünglichen Groß-/Kleinschreibung (Groß-, Kleinbuchstaben oder eine beliebige Kombination daraus) für den Avro-, ORC- oder Parquet-Spaltennamen in doppelte Anführungszeichen gesetzt werden.

  • Nachdem Sie mit DBMS_CLOUD.CREATE_EXTERNAL_TABLE eine externe Tabelle mit dem als avro, orc oder parquet angegebenen Format erstellt haben, können Sie die Spaltennamen der Tabelle mit dem Befehl DESCRIBE in SQL*Plus anzeigen.

  • Wenn reservierte Oracle SQL-Wörter in den Spaltennamen Avro, ORC oder Parquet verwendet werden, müssen sie immer in doppelte Anführungszeichen gesetzt werden, wenn sie an einer beliebigen Stelle in SQL referenziert werden. Weitere Informationen finden Sie unter Reservierte Oracle SQL-Wörter in der SQL-Sprachreferenz für Oracle Database 23ai oder in der SQL-Sprachreferenz für Oracle Database 23ai.