Consulta de datos externos con archivos de origen ORC, Parquet o Avro
Autonomous AI Database facilita el acceso a los datos de ORC, Parquet o Avro almacenados en el almacén de objetos mediante tablas externas. Los orígenes ORC, Parquet y Avro tienen metadatos embebidos en ellos, y el procedimiento DBMS_CLOUD.CREATE_EXTERNAL_TABLE puede utilizar estos metadatos para simplificar la creación de tablas externas.
No es necesario conocer la estructura de los datos, DBMS_CLOUD puede examinar el archivo y convertir el contenido de ORC, Parquet o Avro en las columnas y tipos de dato equivalentes de Oracle. Solo necesita saber la ubicación de los datos en el almacén de objetos, especificar su tipo, ORC, Parquet o Avro y tener credenciales para acceder al archivo de origen en el almacén de objetos.
Nota
Nota: Los pasos para utilizar tablas externas son muy similares para ORC, Parquet y Avro. Estos pasos muestran cómo trabajar con un archivo de origen con formato Parquet.
El archivo de origen de este ejemplo, sales_extended.parquet, contiene datos de formato Parquet. Para consultar este archivo en la base de datos de IA autónoma, haga lo siguiente:
-
Almacene las credenciales del almacén de objetos para acceder al almacén de objetos mediante el procedimiento
DBMS_CLOUD.CREATE_CREDENTIAL:BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'adb_user@example.com', password => 'password' ); END; /No es necesario crear una credencial para acceder al almacén de objetos de Oracle Cloud Infrastructure si activa las credenciales de entidad de recurso. Consulte Uso de la entidad de recurso para acceder a recursos de Oracle Cloud Infrastructure para obtener más información.
Esta operación almacena las credenciales en la base de datos en un formato cifrado. Puede utilizar cualquier nombre para el nombre de credencial. Tenga en cuenta que este paso solo es necesario una vez, a menos que cambien las credenciales del almacén de objetos. Una vez almacenadas las credenciales, puede utilizar el mismo nombre para crear tablas externas.
Consulte Procedimiento CREATE_CREDENTIAL para obtener información sobre los parámetros
usernameypasswordpara diferentes servicios de almacenamiento de objetos. -
Cree una tabla externa para ORC, Parquet o Avro encima de los archivos de origen mediante el procedimiento
DBMS_CLOUD.CREATE_EXTERNAL_TABLE.El procedimiento
DBMS_CLOUD.CREATE_EXTERNAL_TABLEadmite archivos externos en los servicios de almacenamiento de objetos en la nube compatibles, incluidos: Oracle Cloud Infrastructure Object Storage, Azure Blob Storage o Azure Data Lake Storage, Amazon S3 y Amazon S3-Compatible, incluidos: Oracle Cloud Infrastructure Object Storage, Google Cloud Storage y Wasabi Hot Cloud Storage. La credencial es una propiedad de nivel de tabla; los archivos externos deben estar en el mismo almacén de objetos.Por defecto, las columnas creadas en la tabla externa asignan automáticamente sus tipos de dato a los tipos de dato de Oracle para los campos encontrados en los archivos de origen y los nombres de columna de tabla externa coinciden con los nombres de campo de origen.
BEGIN DBMS_CLOUD.CREATE_EXTERNAL_TABLE( table_name =>'sales_extended_ext', credential_name =>'DEF_CRED_NAME', file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/sales_extended.parquet', format => '{"type":"parquet", "schema": "first"}' ); END; /Los parámetros son:
-
table_name: es el nombre de la tabla externa. -
credential_name: es el nombre de la credencial creada en el paso anterior. El parámetrocredential_namedebe cumplir las convenciones de nomenclatura de objetos de Oracle. Consulte Reglas de nomenclatura de objetos de base de datos para obtener más información. -
file_uri_list: es una lista delimitada por comas de los archivos de origen que desea consultar. El formato URI para los puntos finales dedicados está soportado en dominios comerciales (OC1). Consulte Puntos finales dedicados de Object Storage y Formatos de URI de DBMS_CLOUD para obtener más información. -
format: define las opciones que pueden describir para describir el formato del archivo del origen. Para un archivo Parquet, utilice el parámetroformatpara especificartype parquet. Para un archivo Avro, utilice el parámetroformatpara especificartype avro. Para un archivo ORC, utilice el parámetroformatpara especificartype orc.
En este ejemplo,
namespace-stringes el espacio Oracle Cloud Infrastructure Object Storage Namepace, ybucketnamees el nombre del cubo. Consulte Descripción de los espacios de nombres de Object Storage para obtener más información.Por defecto, se define el parámetro
format schemay las columnas y los tipos de dato se derivan automáticamente y los campos del origen coinciden con las columnas de la tabla externa por nombre. Los tipos de dato de origen se convierten a los tipos de dato de Oracle de columna de tabla externa según la asignaciónDBMS_CLOUDpara los tipos de dato ORC, Parquet o Avro. Los valores de parámetroschemaválidos son:-
first: analice el esquema del primer archivo ORC, Parquet o Avro que encuentreDBMS_CLOUDen el archivofile_uri_listespecificado (firstes el valor por defecto paraschema). -
all: analice todos los esquemas para todos los archivos ORC, Parquet o Avro encontrados enfile_uri_list. Puesto que se trata simplemente de archivos capturados en un almacén de objetos, no hay garantía de que los metadatos de cada archivo sean los mismos. Por ejemplo, File1 puede contener un campo llamado "dirección", mientras que File2 puede no tener ese campo. Examinar cada archivo para derivar las columnas es un poco más caro, pero puede ser necesario si el primer archivo no contiene todos los campos necesarios.
Nota
Nota: si se especifica el parámetrocolumn_list, proporcione los nombres de columna y los tipos de dato para la tabla externa y el valorschema, si se especifica, se ignora. Concolumn_listpuede limitar las columnas de la tabla externa. Si no se especificacolumn_list, el valor por defectoschemaesfirst. -
-
A continuación puede ejecutar consultas en la tabla externa que ha creado en el paso anterior:
DESC sales_extended_ext; Name Null? Type -------------- ----- -------------- PROD_ID NUMBER(10) CUST_ID NUMBER(10) TIME_ID VARCHAR2(32767) CHANNEL_ID NUMBER(10) PROMO_ID NUMBER(10) QUANTITY_SOLD NUMBER(10) AMOUNT_SOLD NUMBER(10,2) GENDER VARCHAR2(32767) CITY VARCHAR2(32767) STATE_PROVINCE VARCHAR2(32767) INCOME_LEVEL VARCHAR2(32767)SELECT prod_id, quantity_sold, gender, city, income_level FROM sales_extended_ext WHERE ROWNUM < 8; PROD_ID QUANTITY_SOLD GENDER CITY INCOME_LEVEL 1 13 1 M Adelaide K: 250,000 - 299,999 2 13 1 M Dolores L: 300,000 and above 3 13 1 M Cayuga F: 110,000 - 129,999 4 13 1 F Bergen op Zoom C: 50,000 - 69,999 5 13 1 F Neuss J: 190,000 - 249,999 6 13 1 F Darwin F: 110,000 - 129,999 7 13 1 M Sabadell K:250,000 - 299,999Esta consulta muestra valores para las filas de la tabla externa. Si desea consultar estos datos con frecuencia, después de examinar los datos puede cargarlos en una tabla con
DBMS_CLOUD.COPY_DATA.
Consulte Procedimiento CREATE_EXTERNAL_TABLE para archivos Avro, ORC o Parquet y Procedimiento COPY_DATA para archivos Avro, ORC o Parquet para obtener más información.
Consulte Formatos de URI de DBMS_CLOUD para obtener información sobre los servicios de almacenamiento de objetos en la nube soportados.
Consulta de Datos Externos con Archivos de Origen ORC, Parquet o Avro y Definición Explícita del Tamaño de Columna de Texto
Al acceder a los datos de ORC, Parquet o Avro almacenados en el almacén de objetos mediante tablas externas en la base de datos de IA autónoma, puede definir de forma automática o explícita el tamaño máximo de las columnas de texto.
Por defecto, el tamaño de la columna de texto se define en función del valor MAX_STRING_SIZE.
El archivo de origen de este ejemplo, sales_extended.parquet, contiene datos de formato Parquet. Para consultar este archivo en la base de datos de IA autónoma y definir el tamaño máximo de columna de texto, haga lo siguiente:
-
Almacene las credenciales del almacén de objetos para acceder al almacén de objetos mediante el procedimiento
DBMS_CLOUD.CREATE_CREDENTIAL:BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'adb_user@example.com', password => 'password' ); END; /No es necesario crear una credencial para acceder al almacén de objetos de Oracle Cloud Infrastructure si activa las credenciales de entidad de recurso. Consulte Uso de la entidad de recurso para acceder a recursos de Oracle Cloud Infrastructure para obtener más información.
Esta operación almacena las credenciales en la base de datos en un formato cifrado. Puede utilizar cualquier nombre para el nombre de credencial. Tenga en cuenta que este paso solo es necesario una vez, a menos que cambien las credenciales del almacén de objetos. Una vez almacenadas las credenciales, puede utilizar el mismo nombre para crear tablas externas.
Consulte Procedimiento CREATE_CREDENTIAL para obtener información sobre los parámetros
usernameypasswordpara diferentes servicios de almacenamiento de objetos. -
Cree una tabla externa para ORC, Parquet o Avro sobre los archivos de origen mediante el procedimiento
DBMS_CLOUD.CREATE_EXTERNAL_TABLEy especifique el parámetro de formatomaxvarchar.El procedimiento
DBMS_CLOUD.CREATE_EXTERNAL_TABLEadmite archivos externos en los servicios de almacenamiento de objetos en la nube compatibles, incluidos: Oracle Cloud Infrastructure Object Storage, Azure Blob Storage o Azure Data Lake Storage, Amazon S3 y Amazon S3-Compatible, incluidos: Oracle Cloud Infrastructure Object Storage, Google Cloud Storage y Wasabi Hot Cloud Storage. La credencial es una propiedad de nivel de tabla; los archivos externos deben estar en el mismo almacén de objetos.Por defecto, las columnas creadas en la tabla externa asignan automáticamente sus tipos de dato a los tipos de dato de Oracle para los campos encontrados en los archivos de origen y los nombres de columna de tabla externa coinciden con los nombres de campo de origen.
BEGIN DBMS_CLOUD.CREATE_EXTERNAL_TABLE( table_name =>'sales_extended_ext', credential_name =>'DEF_CRED_NAME', file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/sales_extended.parquet', format => '{"type":"parquet", "schema": "first", "maxvarchar":"extended"}' ); END; /Los parámetros son:
-
table_name: es el nombre de la tabla externa. -
credential_name: es el nombre de la credencial creada en el paso anterior. El parámetrocredential_namedebe cumplir las convenciones de nomenclatura de objetos de Oracle. Consulte Reglas de nomenclatura de objetos de base de datos para obtener más información. -
file_uri_list: es una lista delimitada por comas de los archivos de origen que desea consultar. El formato URI para los puntos finales dedicados está soportado en dominios comerciales (OC1). Consulte Puntos finales dedicados de Object Storage y Formatos de URI de DBMS_CLOUD para obtener más información. -
format: define las opciones que pueden describir para describir el formato del archivo del origen. Para un archivo Parquet, utilice el parámetroformatpara especificartype parquet. Para un archivo Avro, utilice el parámetroformatpara especificartype avro. Para un archivo ORC, utilice el parámetroformatpara especificartype orc.La opción
maxvarcharcon el valorextendedespecifica que las columnas de texto se crean comovarchar(32767)en una instancia de base de datos de IA autónoma con un tamaño de cadena ampliado. Los valores posibles sonstandardconvarchar(4000),extendedconvarchar(32767)yauto. El valormaxvarcharpor defecto esauto. Con este valor, el tamaño de texto máximo se basa en el valor deMAX_STRING_SIZE.
En este ejemplo,
namespace-stringes el espacio Oracle Cloud Infrastructure Object Storage Namepace, ybucketnamees el nombre del cubo. Consulte Descripción de los espacios de nombres de Object Storage para obtener más información.Por defecto, se define el parámetro
format schemay las columnas y los tipos de dato se derivan automáticamente y los campos del origen coinciden con las columnas de la tabla externa por nombre. Los tipos de dato de origen se convierten a los tipos de dato de Oracle de columna de tabla externa según la asignaciónDBMS_CLOUDpara los tipos de dato ORC, Parquet o Avro. Los valores de parámetroschemaválidos son:-
first: analice el esquema del primer archivo ORC, Parquet o Avro que encuentreDBMS_CLOUDen el archivofile_uri_listespecificado (firstes el valor por defecto paraschema). -
all: analice todos los esquemas para todos los archivos ORC, Parquet o Avro encontrados enfile_uri_list. Puesto que se trata simplemente de archivos capturados en un almacén de objetos, no hay garantía de que los metadatos de cada archivo sean los mismos. Por ejemplo, File1 puede contener un campo llamado "dirección", mientras que File2 puede no tener ese campo. Examinar cada archivo para derivar las columnas es un poco más caro, pero puede ser necesario si el primer archivo no contiene todos los campos necesarios.
Nota
Nota: si se especifica el parámetrocolumn_list, proporcione los nombres de columna y los tipos de dato para la tabla externa y el valorschema, si se especifica, se ignora. Concolumn_listpuede limitar las columnas de la tabla externa. Si no se especificacolumn_list, el valor por defectoschemaesfirst. -
-
A continuación puede ejecutar consultas en la tabla externa que ha creado en el paso anterior:
DESC sales_extended_ext; Name Null? Type -------------- ----- -------------- PROD_ID NUMBER(10) CUST_ID NUMBER(10) TIME_ID VARCHAR2(32767) CHANNEL_ID NUMBER(10) PROMO_ID NUMBER(10) QUANTITY_SOLD NUMBER(10) AMOUNT_SOLD NUMBER(10,2) GENDER VARCHAR2(32767) CITY VARCHAR2(32767) STATE_PROVINCE VARCHAR2(32767) INCOME_LEVEL VARCHAR2(32767)SELECT prod_id, quantity_sold, gender, city, income_level FROM sales_extended_ext WHERE ROWNUM < 8; PROD_ID QUANTITY_SOLD GENDER CITY INCOME_LEVEL 1 13 1 M Adelaide K: 250,000 - 299,999 2 13 1 M Dolores L: 300,000 and above 3 13 1 M Cayuga F: 110,000 - 129,999 4 13 1 F Bergen op Zoom C: 50,000 - 69,999 5 13 1 F Neuss J: 190,000 - 249,999 6 13 1 F Darwin F: 110,000 - 129,999 7 13 1 M Sabadell K:250,000 - 299,999Esta consulta muestra valores para las filas de la tabla externa. Si desea consultar estos datos con frecuencia, después de examinar los datos puede cargarlos en una tabla con
DBMS_CLOUD.COPY_DATA.Si especifica la opción
formatmaxvarcharcomostandard, las columnas de textovarchar2()se crean con el tamaño4000. Por ejemplo:BEGIN DBMS_CLOUD.CREATE_EXTERNAL_TABLE( table_name =>'sales_extended_ext', credential_name =>'DEF_CRED_NAME', file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/sales_extended.parquet', format => '{"type":"parquet", "schema": "first", "maxvarchar":"standard"}' ); END; /El parámetro
formatcon la opciónmaxvarchardefinida en el valorstandardespecifica que las columnas de texto se crean comovarchar(4000).DESC sales_extended_ext; Name Null? Type -------------- ----- -------------- PROD_ID NUMBER(10) CUST_ID NUMBER(10) TIME_ID VARCHAR2(4000) CHANNEL_ID NUMBER(10) PROMO_ID NUMBER(10) QUANTITY_SOLD NUMBER(10) AMOUNT_SOLD NUMBER(10,2) GENDER VARCHAR2(4000) CITY VARCHAR2(4000) STATE_PROVINCE VARCHAR2(4000) INCOME_LEVEL VARCHAR2(4000)
Consulte Procedimiento CREATE_EXTERNAL_TABLE para archivos Avro, ORC o Parquet y Procedimiento COPY_DATA para archivos Avro, ORC o Parquet para obtener más información.
Consulte Formatos de URI de DBMS_CLOUD para obtener información sobre los servicios de almacenamiento de objetos en la nube soportados.