Prise en charge des formats Avro, ORC et Parquet pour DBMS_CLOUD

Cette section traite de la prise en charge des formats Avro, ORC et Parquet pour DBMS_CLOUD fournie par Autonomous Database.

Options de format de package DBMS_CLOUD pour Avro, ORC ou Parquet

L'argument de format dans DBMS_CLOUD indique le format des fichiers source.

Les deux méthodes de spécification de l'argument de format sont les suivantes :

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

Et :

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

Exemples :

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

Pour indiquer plusieurs options de format, séparez les valeurs par une virgule ",".

Exemple :

format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true')
Option de format Description Syntaxe

regexuri

Lorsque la valeur de regexuri est définie sur TRUE, vous pouvez utiliser des caractères génériques ainsi que des expressions régulières dans les noms de fichier dans les URI de fichier source cloud.

Les caractères "*" et " ?" sont considérés comme des caractères génériques lorsque le paramètre regexuri est défini sur FALSE. Lorsque le paramètre regexuri est défini sur TRUE, les caractères "*" et " ?" font partie du modèle d'expression régulière indiqué.

Les modèles d'expression régulière sont uniquement pris en charge pour le nom de fichier ou le chemin de sous-dossier dans vos URI et la correspondance de modèle est identique à celle effectuée par la fonction REGEXP_LIKE. Les modèles d'expression régulière ne sont pas pris en charge pour les noms de répertoire.

Pour les tables externes, cette option est uniquement prise en charge avec les tables créées sur un fichier dans Object Storage.

Exemple :

format => JSON_OBJECT('regexuri' value TRUE)

Pour plus d'informations sur la condition REGEXP_LIKE, reportez-vous à REGEXP_LIKE Condition dans Oracle Database 19c SQL Language Reference ou Oracle Database 23ai SQL Language Reference.

regexuri: True

Valeur par défaut :False

type

Spécifie le type de fichier.

type : avro | orc | parquet

schema

Lorsque le schéma est défini sur first ou all, les colonnes et les types de données de la table externe sont automatiquement dérivés des métadonnées du fichier Avro, ORC ou Parquet.

Les noms de colonne correspondent à ceux trouvés dans le fichier Avro, ORC ou Parquet. Les types de données Avro, ORC ou Parquet sont convertis en types de données Oracle. Toutes les colonnes sont ajoutées à la table.

La valeur first indique d'utiliser les métadonnées du premier fichier Avro, ORC ou Parquet dans file_uri_list pour générer automatiquement les colonnes et leur type de données. Utilisez first si tous les fichiers ont le même schéma.

La valeur all indique d'utiliser les métadonnées de tous les fichiers Avro, ORC ou Parquet dans file_uri_list pour générer automatiquement les colonnes et leur type de données. Utilisez all (plus lent) si les fichiers peuvent avoir des schémas différents.

Valeur par défaut : si column_list est indiqué, la valeur schema, si elle est indiquée, est ignorée. Si column_list n'est pas indiqué, la valeur par défaut de schema est first.

Remarque : pour les fichiers au format Avro, ORC ou Parquet, l'option de format schema n'est pas disponible et le paramètre column_list doit être indiqué pour les tables externes partitionnées à l'aide de la procédure DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE.

schema : first | all

Mise en correspondance de types de données Avro avec des types de données Oracle pour le package DBMS_CLOUD

Décrit la mise en correspondance des types de données Avro avec les types de données Oracle.

Remarques :

Les types complexes, tels que les mappings, les tableaux et les structures, sont pris en charge à partir d'Oracle Database 19c. Reportez-vous à DBMS_CLOUD Types complexes Avro, ORC et Parquet pour plus d'informations sur l'utilisation des types complexes Avro.
Type Avro Type Oracle
INT (ENT) NUMBER(10)
LONG NOMBRE(19)
BOOL NOMBRE(1)
UTF8 BYTE_ARRAY RAW(2000)
FLT BINARY_FLOAT
Liste de distribution pour les messages BINARY_DOUBLE
DÉCIMAL(p) NUMÉRO(p)
DÉCIMAL(p,s) NUMBER(p,s)
DATE DATE
STRING VARCHAR2
TIME_MILLIS VARCHAR2(20 OCTETS)
TIME_MICROS VARCHAR2(20 OCTETS)
TIMESTAMP_MILLIS TIMESTAMP(3)
TIMESTAMP_MICROS TIMESTAMP(6)
ENUM VARCHAR2(n) où : "n" est la longueur maximale réelle des valeurs possibles d'AVRO ENUM.
DURATION (DUREE) RAW(2000)
FIXED RAW(2000)
NULL VARCHAR2(1) OCTET

Pour plus d'informations sur l'utilisation des types complexes Avro, ORC et Parquet, reportez-vous à DBMS_CLOUD Package.

Mise en correspondance de types de données ORC avec des types de données Oracle pour le package DBMS_CLOUD

Décrit la mise en correspondance des types de données ORC avec les types de données Oracle.

Reportez-vous à DBMS_CLOUD Types complexes Avro, ORC et Parquet pour le package pour plus d'informations sur l'utilisation des types complexes ORC.

Type ORC Type Oracle En savoir plus
tableau Format JSON VARCHAR2(n) Types complexes Avro, ORC et Parquet pour le package DBMS_CLOUD
bigint (64 bits) NOMBRE(19)  
binaire BLOB  
booléen (1 bit) NOMBRE(1)  
char CAR(n)  
Date DATE  
double BINARY_DOUBLE  
float BINARY_FLOAT  
int (32 bits) NUMBER(10)  
list Format JSON VARCHAR2(n) Types complexes Avro, ORC et Parquet pour le package DBMS_CLOUD
carte Format JSON VARCHAR2(n) Types complexes Avro, ORC et Parquet pour le package DBMS_CLOUD
smallint (16 bits) NOMBRE(5)  
chaîne VARCHAR2(4000)  
struct Format JSON VARCHAR2(n) Types complexes Avro, ORC et Parquet pour le package DBMS_CLOUD
timestamp TIMESTAMP  
tinyint (8 bits) NOMBRE(3)  
union Format JSON VARCHAR2(n) Types complexes Avro, ORC et Parquet pour le package DBMS_CLOUD
varchar VARCHAR2(n)  

Mise en correspondance de types de données Parquet avec des types de données Oracle pour le package DBMS_CLOUD

Décrit la mise en correspondance des types de données Parquet avec les types de données Oracle.

Remarques :

Les types complexes, tels que les mappings, les tableaux et les structures, sont pris en charge à partir d'Oracle Database 19c. Pour plus d'informations sur l'utilisation des types complexes Parquet, reportez-vous à Types complexes Avro, ORC et Parquet pour le package DBMS_CLOUD.
Type Parquet Type Oracle
UINT_64 NOMBRE(20)
INT_64 NOMBRE(19)
UINT_32 NUMBER(10)
INT_32 NUMBER(10)
UINT_16 NOMBRE(5)
INT_16 NOMBRE(5)
UINT_8 NOMBRE(3)
INT_8 NOMBRE(3)
BOOL NOMBRE(1)
UTF8 BYTE_ARRAY VARCHAR2(4000 OCTETS)
FLT BINARY_FLOAT
Liste de distribution pour les messages BINARY_DOUBLE
DÉCIMAL(p) NUMÉRO(p)
DÉCIMAL(p,s) NUMBER(p,s)
DATE DATE
STRING VARCHAR2(4000)
TIME_MILLIS VARCHAR2(20 OCTETS)
TIME_MILLIS_UTC VARCHAR2(20 OCTETS)
TIME_MICROS VARCHAR2(20 OCTETS)
TIME_MICROS_UTC VARCHAR2(20 OCTETS)
TIMESTAMP_MILLIS TIMESTAMP(3)
TIMESTAMP_MILLIS_UTC TIMESTAMP(3)
TIMESTAMP_MICROS TIMESTAMP(6)
TIMESTAMP_MICROS_UTC TIMESTAMP(6)
TIMESTAMP_NANOS TIMESTAMP(9)

Pour plus d'informations sur l'utilisation des types complexes Parquet, reportez-vous à Types complexes Avro, ORC et Parquet pour le package DBMS_CLOUD.

Mise en correspondance de types de données Oracle avec des types de données Parquet pour le package DBMS_CLOUD

Décrit la mise en correspondance des types de données Oracle avec les types de données Parquet.

Type Oracle Type Parquet
BINARY_DOUBLE Liste de distribution pour les messages
BINARY_FLOAT FLT
DATE DATE
NUMBER(p,s) DÉCIMAL(p,s)
NUMÉRO(p) DÉCIMAL(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

Paramètres de session NLS

Les paramètres de session NLS NLS_DATE_FORMAT, NLS_TIMESTAMP_FORMAT, NLS_TIMESTAMP_TZ_FORMAT et NLS_NUMERIC_CHARACTERS définissent le mode d'affichage de la date, de l'horodatage, de l'horodatage avec format de fuseau horaire et du séparateur de radix pour l'horodatage avec marqueur décimal lorsqu'une table avec ces types de colonne est interrogée.

De plus, lorsque vous exportez des données à l'aide de DBMS_CLOUD.EXPORT_DATA et que vous indiquez la sortie Parquet, Autonomous Database lit les valeurs de ces paramètres à partir de la table NLS_SESSION_PARAMETERS. Autonomous Database utilise ces valeurs pour convertir les types de données Oracle DATE ou TIMESTAMP en types Parquet.

Les paramètres NLS_SESSION_PARAMETERS prennent en charge un masque de format RR (spécification d'année à deux caractères).

Le masque de format RR pour l'année n'est pas pris en charge pour ces paramètres lorsque vous exportez des données vers Parquet avec DBMS_CLOUD.EXPORT_DATA. Une erreur d'application est générée si vous tentez d'exporter vers le parquet et que NLS_SESSION_PARAMETERS est défini pour utiliser le masque de format RR (la valeur par défaut du format RR dépend de la valeur du paramètre NLS_TERRITORY).

Lorsque l'un des paramètres NLS_DATE_FORMAT, NLS_TIMESTAMP_FORMAT ou NLS_TIMESTAMP_TZ_FORMAT utilise le masque de format RR, vous devez remplacer la valeur de format par la valeur prise en charge pour exporter des données vers Parquet avec DBMS_CLOUD.EXPORT_DATA. Exemple :

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';
Une fois la valeur modifiée, vous pouvez la vérifier en interrogeant la vue NLS_SESSION_PARAMETERS :
SELECT value FROM NLS_SESSION_PARAMETERS 
       WHERE parameter IN ('NLS_DATE_FORMAT','NLS_TIMESTAMP_FORMAT','NLS_TIMESTAMP_TZ_FORMAT');

Si NLS_DATE_FORMAT est défini, il s'applique aux colonnes avec le type de données DATE. Si NLS_TIMESTAMP_FORMAT est défini, il s'applique aux colonnes avec le type de données TIMESTAMP. Si NLS_TIMESTAMP_TZ_FORMAT est défini, il s'applique aux colonnes avec le type de données TIMESTAMP WITH TIME ZONE.

Pour plus d'informations, reportez-vous à Paramètres de date et d'heure dans le Guide de support de la globalisation de la base de données Oracle Database 19c ou le Guide de support de la globalisation de la base de données Oracle Database 23ai et à Vues du dictionnaire de données NLS dans le Guide de support de la globalisation de la base de données Oracle Database 19c ou le Guide de support de la globalisation de la base de données Oracle Database 23ai.

Types complexes Avro, ORC et Parquet pour le package DBMS_CLOUD

Décrit la mise en correspondance des types de données complexes Avro, ORC et Parquet avec les types de données Oracle.

Autonomous Database prend en charge les types de données complexes, notamment les suivants :

  • struct

  • list

  • carte

  • union

  • tableau

Lorsque vous indiquez le type de fichier source Avro, ORC ou Parquet et que le fichier source inclut des colonnes complexes, les requêtes Autonomous Database renvoient le format JSON pour les colonnes complexes. Le traitement des résultats de requête est ainsi simplifié. Vous pouvez utiliser les fonctionnalités d'analyse JSON performantes d'Oracle de manière cohérente sur tous les types de fichier et de données. Le tableau suivant indique le format des types complexes dans Autonomous Database :

Remarques :

Les champs complexes sont mis en correspondance avec les colonnes VARCHAR2 et des limites de taille VARCHAR2 s'appliquent.
Type Parquet ORC Avro Oracle
Liste : séquence de valeurs List (Liste) List (Liste) Array VARCHAR2 (format JSON)
Mise en correspondance : liste d'objets avec clé unique Mapper Mapper Mapper VARCHAR2 (format JSON)
Union : valeurs de type différent Indisponible Union Union VARCHAR2 (format JSON)
Objet : au moins aucune paire clé-valeur Struct Struct Enregistrement VARCHAR2 (format JSON)

Si vos fichiers source ORC, Parquet ou Avro contiennent des types complexes, vous pouvez interroger la sortie JSON pour ces types complexes courants. L'exemple suivant présente un fichier ORC, movie-info.orc, de type complexe (le même traitement de type complexe s'applique aux fichiers source Parquet et Avro.

Prenons le fichier movie-info.orc avec le schéma suivant :

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>

Chaque film est classé selon plusieurs genres à l'aide d'un tableau genres. Le tableau genres est un élément array avec des structs et chaque élément a une valeur id (int) et une valeur name (string). Le tableau genres est considéré comme un type complexe. Vous pouvez créer une table sur ce fichier ORC à l'aide de DBMS_CLOUD.CREATE_EXTERNAL_TABLE comme suit :

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;
/

Lorsque vous créez la table externe, la base de données génère automatiquement les colonnes en fonction du schéma du fichier ORC (il en va de même pour Avro ou Parquet). Pour cet exemple, DBMS_CLOUD.CREATE_EXTERNAL_TABLE crée une table dans votre base de données comme suit :

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;
 )

Vous pouvez maintenant interroger les données de film comme suit :

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

Cela génère la sortie suivante :


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"}]

Le type complexe genres est renvoyé en tant que tableau JSON.

Pour rendre les données JSON plus utiles, vous pouvez transformer la colonne à l'aide des fonctions JSON d'Oracle. Par exemple, vous pouvez utiliser la notation "." de JSON ainsi que des fonctions de transformation plus performantes, telles que JSON_TABLE.

Pour plus d'informations sur la notation ".", reportez-vous à Accès simple par points aux données JSON dans le guide du développeur JSON Oracle Database 19c ou le guide du développeur JSON Oracle Database 23ai.

Pour plus d'informations sur JSON_TABLE, reportez-vous à Fonction SQL/JSON JSON_TABLE dans le guide du développeur JSON Oracle Database 19c ou le guide du développeur JSON Oracle Database 23ai.

L'exemple suivant montre une requête sur la table, qui prend chaque valeur du tableau et la renvoie dans une ligne de l'ensemble de résultats :
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 crée une ligne pour chaque valeur du tableau, la jointure externe, et le type struct est analysé pour extraire le nom du genre. Cela génère la sortie suivante :


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"}]

Mise en correspondance de nom de colonnes Avro, ORC et Parquet avec des noms de colonne Oracle pour le package DBMS_CLOUD

Décrit les règles de conversion des noms de colonne Avro, ORC et Parquet en noms de colonne Oracle.

Les éléments suivants sont pris en charge pour les noms de colonne Avro, ORC et Parquet, mais peuvent nécessiter l'utilisation de guillemets pour les références Oracle SQL dans les tables externes. Par conséquent, pour en faciliter l'utilisation et éviter d'avoir à utiliser des guillemets lors du référencement de noms de colonne, si possible, n'utilisez pas les éléments suivants dans les noms de colonne Avro, ORC et Parquet :

  • Espaces imbriqués

  • Numéros de début

  • Caractères de soulignement de début

  • Mots réservés Oracle SQL

Le tableau suivant indique les différents types de nom de colonne Avro, ORC et Parquet, et les règles d'utilisation des noms de colonne pour les noms de colonne Oracle dans les tables externes.

Nom Avro, ORC ou Parquet Nom CREATE TABLE CATALOGUE Oracle SQL valide Remarques 
partie, partie ou partie pièce, pièce, pièce PARTIE

select part

select Part

select paRt

select PART

Oracle met implicitement en majuscules les noms de colonne sans guillemets.
Numéro d'ordre "Numéro d'ordre" Numéro d'ordre select "Ord No" Les guillemets sont requis lorsqu'il y a des espaces imbriqués, ce qui conserve également la casse des caractères.
__index_key__ "__index_key__" __index_key__ select "__index_key__" Les guillemets sont requis lorsqu'il y a un trait de soulignement de début, ce qui conserve également la casse des caractères.
6Way "6Way" 6Way select "6Way" Les guillemets sont requis lorsqu'il y a un chiffre de début, ce qui conserve également la casse des caractères.
create, Create ou CREATE, etc. (toute variation de la casse), partition, Partition, PARTITION, etc. (pour un mot réservé Oracle) "CRÉER" "PARTITION" CRÉER UNE PARTITION

select "CREATE"

select "PARTITION"

Les guillemets sont requis autour des mots réservés Oracle SQL. La mise en majuscules de ces valeurs est forcée, mais elles doivent toujours être placées entre guillemets lorsqu'elles sont utilisées dans SQL.
ROWID, ROWID, ROWid, etc. (pour ROWID, reportez-vous aux remarques) id ligne  

select "rowid"

select "Rowid"

select "ROWid"

select "rowid"

Pour ROWID, toute variation du terme ROWID en casse mixte ou en minuscules conserve la casse, et doit toujours être placée entre guillemets et utiliser les variations de casse d'origine. En raison du conflit inhérent avec le ROWID d'Oracle pour la table, si vous indiquez un ROWID en majuscules, il est automatiquement stocké en tant que "ROWID" en minuscules et doit toujours être placé entre guillemets lorsqu'il est référencé.

Remarques :

  • En général, un nom de colonne dans une table externe peut être référencé sans guillemets.

  • Sauf en présence d'un espace imbriqué, d'un trait de soulignement de début ("_") ou d'un chiffre de début ("0" à "9"), la casse d'origine du nom de colonne est conservée. Le nom de colonne doit toujours être référencé avec des guillemets et en utilisant la casse d'origine (majuscules, minuscules ou mixte) du nom de colonne Avro, ORC ou Parquet.

  • Après avoir utilisé DBMS_CLOUD.CREATE_EXTERNAL_TABLE pour créer une table externe au format indiqué en tant que avro, orc ou parquet, utilisez la commande DESCRIBE dans SQL*Plus pour visualiser les noms de colonne de la table.

  • Lorsque des mots réservés Oracle SQL sont utilisés dans les noms de colonne Avro, ORC ou Parquet, ils doivent toujours être entre guillemets lorsqu'ils sont référencés n'importe où dans SQL. Pour plus d'informations, reportez-vous à Mots réservés Oracle SQL dans Référence du langage SQL Oracle Database 23ai ou Référence du langage SQL Oracle Database 23ai.