O procedimento DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE
suporta arquivos particionados externos nos serviços suportados de armazenamento de objetos na nuvem. A credencial é uma propriedade de nível de tabela; portanto, todos os arquivos externos devem estar no mesmo armazenamento de objetos na nuvem.
Por exemplo:
BEGIN
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE
(
TABLE_NAME => 'sales_sample',
CREDENTIAL_NAME => 'DEF_CRED_NAME',
FILE_URI_LIST => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/moviestream_landing/o/sales_sample/*.parquet',
FORMAT => '{"type":"parquet", "schema": "first","partition_columns":[{"name":"month","type":"varchar2(100)"}]}');
END;
/
Os parâmetros são:
-
table_name
: é o nome da tabela externa.
-
credential_name
: é o nome da credencial criada na etapa anterior.
-
file_uri_list
: é uma lista delimitada por vírgulas dos URIs de arquivo de origem. Há duas opções para essa lista:
-
Especifique uma lista delimitada por vírgulas de URIs de arquivos individuais sem curingidas.
-
Especifique um URI de arquivo único com curingas, em que os curingas só podem ser posteriores à última barra "/". O caractere "*" pode ser usado como curinga para vários caracteres, o caractere "?" pode ser usado como curinga para um único caractere.
-
column_list
: é uma lista delimitada de nomes de colunas e tipos de dados para a tabela externa. A lista inclui as colunas dentro do arquivo de dados e aquelas derivadas do nome do objeto (dos nomes no caminho do arquivo).
O column_list
não é obrigatório quando os arquivos de dados são estruturados (Parquet, Avro ou ORC).
-
format
: define as opções que você pode especificar para descrever o formato do arquivo de origem. O parâmetro partition_columns
format
especifica os nomes das colunas de partição.
Se os dados em seu arquivo de origem forem criptografados, decriptografe-os especificando a opção de formato encryption
. Consulte Descriptografar Dados Durante a Importação do Serviço Object Storage para obter mais informações sobre decriptografia de dados.
Consulte DBMS_CLOUD Package Format Options para obter mais informações.
Neste exemplo, namespace-string
corresponde ao namespace do armazenamento de objetos do Oracle Cloud Infrastructure e bucketname
corresponde ao nome do bucket. Consulte Noções Básicas de Namespaces do serviço Object Storage para obter mais informações.
A chamada DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE
resultaria na seguinte definição de tabela:
CREATE TABLE "ADMIN"."SALES_SAMPLE"
( "DAY_ID" TIMESTAMP (6),
"GENRE_ID" NUMBER(19,0),
"MOVIE_ID" NUMBER(19,0),
"CUST_ID" NUMBER(19,0),
"APP" VARCHAR2(4000 BYTE) COLLATE "USING_NLS_COMP",
"DEVICE" VARCHAR2(4000 BYTE) COLLATE "USING_NLS_COMP",
"OS" VARCHAR2(4000 BYTE) COLLATE "USING_NLS_COMP",
"PAYMENT_METHOD" VARCHAR2(4000 BYTE) COLLATE "USING_NLS_COMP",
"LIST_PRICE" BINARY_DOUBLE,
"DISCOUNT_TYPE" VARCHAR2(4000 BYTE) COLLATE "USING_NLS_COMP",
"DISCOUNT_PERCENT" BINARY_DOUBLE,
"ACTUAL_PRICE" BINARY_DOUBLE,
"MONTH" VARCHAR2(100 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.fileformat=parquet
com.oracle.bigdata.filename.columns=["month"]
com.oracle.bigdata.file_uri_list="https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/moviestream_landing/o/sales_sample/*.parquet"
com.oracle.bigdata.credential.schema="ADMIN"
com.oracle.bigdata.credential.name=CRED_OCI
com.oracle.bigdata.trimspaces=notrim
)
)
REJECT LIMIT 0
PARTITION BY LIST ("MONTH")
(PARTITION "P1" VALUES (('2019-01'))
LOCATION
( 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/moviestream_landing/o/sales_sample/month=2019-01/*.parquet'
),
PARTITION "P2" VALUES (('2019-02'))
LOCATION
( 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/moviestream_landing/o/sales_sample/month=2019-02/*.parquet'
))
PARALLEL ;
Consulte Procedimento CREATE_EXTERNAL_PART_TABLE para obter informações detalhadas sobre os parâmetros.
Consulte DBMS_CLOUD Formatos de URI para obter mais informações sobre os serviços suportados de armazenamento de objetos da nuvem.