使用 DBMS_CLOUD.EXPORT_DATA 将数据作为文本导出到对象存储
使用 DBMS_CLOUD.EXPORT_DATA 将数据作为文本从自治 AI 数据库导出到云对象存储。文本格式导出选项为 CSV、JSON 或 XML。
将 JSON 数据导出到云对象存储
通过指定查询,显示将表数据作为 JSON 数据从自治 AI 数据库导出到云对象存储的步骤。
此导出方法支持 Autonomous Database 支持的所有云对象存储,您可以使用 Oracle Cloud Infrastructure 资源主用户访问 Oracle Cloud Infrastructure 对象存储,使用 Amazon 资源名称 (ARN) 访问 AWS 简单存储服务 (S3),使用 Azure 服务主用户访问 Azure BLOB 存储,或使用 Google 服务账户访问 Google Cloud Platform (GCP) 资源。
-
连接到自治 AI 数据库实例。
有关详细信息,请参阅连接到自治 AI 数据库。
-
使用
DBMS_CLOUD.CREATE_CREDENTIAL存储您的云对象存储身份证明。例如:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'user1@example.com', password => 'password' ); END; /您为
username和password提供的值取决于您使用的云对象存储服务。 -
运行
DBMS_CLOUD.EXPORT_DATA并指定format参数type(值为json),以将结果导出为云对象存储上的 JSON 文件。要生成 JSON 输出文件,
file_uri_list参数有两个选项:-
将
file_uri_list值设置为云对象存储上现有存储桶的 URL。 -
将
file_uri_list值设置为云对象存储上现有存储桶的 URL,并包括为导出的 JSON 生成文件名时要使用的文件名前缀。
如果不在
file_uri_list中包括文件名前缀,则DBMS_CLOUD.EXPORT_DATA会提供文件名前缀。有关详细信息,请参阅文本输出文件命名(CSV、JSON、Parquet 或 XML)。例如,以下内容显示了
DBMS_CLOUD.EXPORT_DATA,其中包含file_uri_list中指定的文件名前缀:BEGIN DBMS_CLOUD.EXPORT_DATA( credential_name => 'DEF_CRED_NAME', file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/dept_export', query => 'SELECT * FROM DEPT', format => JSON_OBJECT('type' value 'json')); END; /在此示例中,
*namespace-string*是 Oracle Cloud Infrastructure 对象存储名称空间,bucketname是存储桶名称。有关详细信息,请参阅了解对象存储名称空间。当记录分隔符包括转义符(如 \r\n 或 \t)时,将记录分隔符括在双引号中。例如,要使用记录分隔符
\r\n,请将值括在双引号中:"\r\n"。BEGIN DBMS_CLOUD.EXPORT_DATA( credential_name => 'DEF_CRED_NAME', file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/dept_export', query => 'SELECT * FROM DEPT', format => JSON_OBJECT('type' value 'json', 'recorddelimiter' value '"\r\n"' format json)); END; /在此示例中,
*namespace-string*是 Oracle Cloud Infrastructure 对象存储名称空间,bucketname是存储桶名称。有关详细信息,请参阅了解对象存储名称空间。有关参数的详细信息,请参见 EXPORT_DATA Procedure 。
有关可以与
DBMS_CLOUD.EXPORT_DATA一起使用的可用format参数的详细信息,请参见 DBMS_CLOUD Package Format Options for EXPORT_DATA 。 -
使用 DBMS_CLOUD.EXPORT_DATA 导出说明:
-
如果需要,您提供的
query参数可以是高级查询,例如包含联接或子查询的查询。 -
使用
compression选项指定format参数以压缩输出文件。 -
使用
encryption选项指定format参数以在导出时加密数据。有关详细信息,请参阅导出到对象存储时加密数据。 -
当不再需要导出的文件时,请使用过程
DBMS_CLOUD.DELETE_OBJECT或使用原生云对象存储命令删除这些文件。
以 CSV 格式将数据导出至云对象存储
通过指定查询,显示将表数据以 CSV 数据形式从自治 AI 数据库导出到云对象存储的步骤。
此导出方法支持自治 AI 数据库支持的所有云对象存储。您还可以使用 Amazon 资源名称 (ARN) 访问 AWS 简单存储服务 (S3)、访问 Azure BLOB 存储的 Azure 服务主体,或者使用 Google 服务账户访问 Google Cloud Platform (GCP) 资源。
-
连接到自治 AI 数据库实例。
有关详细信息,请参阅连接到自治 AI 数据库。
-
使用
DBMS_CLOUD.CREATE_CREDENTIAL存储您的云对象存储身份证明。例如:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'user1@example.com', password => 'password' ); END; /为
username和password提供的值取决于您使用的云对象存储服务。 -
运行
DBMS_CLOUD.EXPORT_DATA并指定值为csv的format参数type,以将结果导出为云对象存储上的 CSV 文件。要生成 CSV 输出文件,
file_uri_list参数有两个选项:-
将
file_uri_list值设置为云对象存储上现有存储桶的 URL。 -
将
file_uri_list值设置为云对象存储上现有存储桶的 URL,并包括为导出的 CSV 文件生成文件名时要使用的文件名前缀。
如果不在
file_uri_list中包括文件名前缀,则DBMS_CLOUD.EXPORT_DATA会提供文件名前缀。有关详细信息,请参阅文本输出文件命名(CSV、JSON、Parquet 或 XML)。例如,以下内容显示了
DBMS_CLOUD.EXPORT_DATA,其中包含file_uri_list中指定的文件名前缀:BEGIN DBMS_CLOUD.EXPORT_DATA( credential_name => 'DEF_CRED_NAME', file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/dept_export', query => 'SELECT * FROM DEPT', format => JSON_OBJECT('type' value 'csv', 'delimiter' value '|', 'compression' value 'gzip')); END; /在此示例中,
*namespace-string*是 Oracle Cloud Infrastructure 对象存储名称空间,bucketname是存储桶名称。有关详细信息,请参阅了解对象存储名称空间。有关参数的详细信息,请参见 EXPORT_DATA Procedure 。
有关可以与
DBMS_CLOUD.EXPORT_DATA一起使用的可用format参数的详细信息,请参见 DBMS_CLOUD Package Format Options for EXPORT_DATA 。 -
使用 DBMS_CLOUD.EXPORT_DATA 导出说明:
-
如果需要,您提供的
query参数可以是高级查询,例如包含联接或子查询的查询。 -
使用
compression选项指定format参数以压缩输出文件。 -
使用
encryption选项指定format参数以在导出时加密数据。有关详细信息,请参阅导出到对象存储时加密数据。 -
当不再需要导出的文件时,请使用过程
DBMS_CLOUD.DELETE_OBJECT或使用原生云对象存储命令删除这些文件。
将数据作为 Parquet 导出到云对象存储
显示通过指定查询将表数据作为 Parquet 数据从自治 AI 数据库导出到云对象存储的步骤。
此导出方法支持 Autonomous Database 支持的所有云对象存储,您可以使用 Oracle Cloud Infrastructure 资源主用户访问 Oracle Cloud Infrastructure 对象存储,使用 Amazon 资源名称 (ARN) 访问 AWS 简单存储服务 (S3),使用 Azure 服务主用户访问 Azure BLOB 存储,或使用 Google 服务账户访问 Google Cloud Platform (GCP) 资源。
-
连接到自治 AI 数据库实例。
有关详细信息,请参阅连接到自治 AI 数据库。
-
使用
DBMS_CLOUD.CREATE_CREDENTIAL存储您的云对象存储身份证明。例如:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'user1@example.com', password => 'password' ); END; /您为
username和password提供的值取决于您使用的云对象存储服务。 -
运行
DBMS_CLOUD.EXPORT_DATA并指定值为parquet的format参数type,以将结果导出为云对象存储上的 parquet 文件。要生成参数组输出文件,
file_uri_list参数有两个选项:-
将
file_uri_list值设置为云对象存储上现有存储桶的 URL。 -
将
file_uri_list值设置为云对象存储上现有存储桶的 URL,并包括为导出的参数文件生成文件名时要使用的文件名前缀。
如果不在
file_uri_list中包括文件名前缀,则DBMS_CLOUD.EXPORT_DATA会提供文件名前缀。有关详细信息,请参阅文本输出文件命名(CSV、JSON、Parquet 或 XML)。例如,以下内容显示了
DBMS_CLOUD.EXPORT_DATA,其中包含file_uri_list中指定的文件名前缀:BEGIN DBMS_CLOUD.EXPORT_DATA( credential_name => 'DEF_CRED_NAME', file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/dept_export', query => 'SELECT * FROM DEPT', format => JSON_OBJECT('type' value 'parquet', 'compression' value 'snappy')); END; /在此示例中,
*namespace-string*是 Oracle Cloud Infrastructure 对象存储名称空间,bucketname是存储桶名称。有关详细信息,请参阅了解对象存储名称空间。有关参数的详细信息,请参见 EXPORT_DATA Procedure 。
有关可以与
DBMS_CLOUD.EXPORT_DATA一起使用的可用format参数的详细信息,请参见 DBMS_CLOUD Package Format Options for EXPORT_DATA 。 -
使用 DBMS_CLOUD.EXPORT_DATA 导出说明:
-
如果需要,您提供的
query参数可以是高级查询,例如包含联接或子查询的查询。 -
使用
compression选项指定format参数以压缩输出文件。typeparquet的缺省compression为snappy。 -
当不再需要导出的文件时,请使用过程
DBMS_CLOUD.DELETE_OBJECT或使用原生云对象存储命令删除这些文件。 -
有关 Oracle 类型到参数类型的映射的详细信息,请参阅 DBMS_CLOUD Package Oracle Data Type to Parquet Mapping 。
以下类型不受支持,或者对其使用
DBMS_CLOUD.EXPORT_DATA导出 Parquet 的支持有限制:Oracle 类型 说明 BFILE不支持 BLOB不支持 DATE支持以下限制: DATE格式仅支持日期、月份和年份。不支持小时、分钟和秒。
有关将DATE导出到 Parquet 的 NLS 格式限制的详细信息,请参见 DBMS_CLOUD Package Oracle Data Type to Parquet Mapping 。INTERVAL DAY TO SECOND支持并在内部被视为字符串 INTERVAL YEAR TO MONTH支持并在内部被视为字符串 LONG不支持 LONG RAW不支持 NUMBER支持以下限制:
- 最大精度可以为 38,小数位数可以小于精度。
- 如果没有为列NUMBER类型提供精度和小数位数,则默认使用精度和小数位数为 20。
-NUMBER类型不支持负小数位数。Object Types不支持 TIMESTAMP支持以下限制:
- 如果有多个列具有不同的精度,将采用最高精度。
-TIMESTAMP WITH TIME ZONEOracle 数据类型将仅使用时间戳。
有关将TIMESTAMP导出到 Parquet 的 NLS 格式限制的详细信息,请参见 DBMS_CLOUD Package Oracle Data Type to Parquet Mapping 。
将数据作为 XML 导出到云对象存储
通过指定查询,显示将表数据作为 XML 数据从自治 AI 数据库导出到云对象存储的步骤。
此导出方法支持自治 AI 数据库支持的所有云对象存储。您还可以使用 Amazon 资源名称 (ARN) 访问 AWS 简单存储服务 (S3)、访问 Azure BLOB 存储的 Azure 服务主体,或者使用 Google 服务账户访问 Google Cloud Platform (GCP) 资源。
-
连接到自治 AI 数据库实例。
有关详细信息,请参阅连接到自治 AI 数据库。
-
使用
DBMS_CLOUD.CREATE_CREDENTIAL存储您的云对象存储身份证明。例如:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'user1@example.com', password => 'password' ); END; /为
username和password提供的值取决于您使用的云对象存储服务。 -
运行
DBMS_CLOUD.EXPORT_DATA并指定值为xml的format参数type,以将结果导出为云对象存储上的 XML 文件。要生成 XML 输出文件,
file_uri_list参数有两个选项:-
将
file_uri_list值设置为云对象存储上现有存储桶的 URL。 -
将
file_uri_list值设置为云对象存储上现有存储桶的 URL,并包括为导出的 JSON 生成文件名时要使用的文件名前缀。
如果不在
file_uri_list中包括文件名前缀,则DBMS_CLOUD.EXPORT_DATA会提供文件名前缀。有关详细信息,请参阅文本输出文件命名(CSV、JSON、Parquet 或 XML)。例如,以下内容显示了
DBMS_CLOUD.EXPORT_DATA,其中包含file_uri_list中指定的文件名前缀:BEGIN DBMS_CLOUD.EXPORT_DATA( credential_name => 'DEF_CRED_NAME', file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/dept_export', query => 'SELECT * FROM DEPT', format => JSON_OBJECT('type' value 'xml', 'compression' value 'gzip')); END; /在此示例中,
*namespace-string*是 Oracle Cloud Infrastructure 对象存储名称空间,bucketname是存储桶名称。有关详细信息,请参阅了解对象存储名称空间。有关参数的详细信息,请参见 EXPORT_DATA Procedure 。
有关可以与
DBMS_CLOUD.EXPORT_DATA一起使用的可用format参数的详细信息,请参见 DBMS_CLOUD Package Format Options for EXPORT_DATA 。 -
使用 DBMS_CLOUD.EXPORT_DATA 导出说明:
-
如果需要,您提供的
query参数可以是高级查询,例如包含联接或子查询的查询。 -
使用
compression选项指定format参数以压缩输出文件。 -
使用
encryption选项指定format参数以在导出时加密数据。有关详细信息,请参阅导出到对象存储时加密数据。 -
当不再需要导出的文件时,请使用过程
DBMS_CLOUD.DELETE_OBJECT或使用原生云对象存储命令删除这些文件。
文本输出的文件命名( CSV、JSON、Parquet 或 XML)
介绍将 DBMS_CLOUD.EXPORT_DATA 与 CSV、JSON、Parquet 或 XML 文本文件输出一起使用的输出文件命名。
DBMS_CLOUD.EXPORT_DATA 执行使用 query 参数指定的查询,并将结果发送到云对象存储存储桶中的文本文件或目录。输出格式取决于您指定的 format 参数 type(CSV、JSON、Parquet 或 XML 之一)。
为了加快过程并尽快生成输出,DBMS_CLOUD.EXPORT_DATA 会将其工作除以。这意味着,根据系统资源,当您运行 DBMS_CLOUD.EXPORT_DATA 时,该过程将在云对象存储存储桶或目录中创建多个输出文件。
生成的每个文件的格式为:
[FileNamePrefix | client_info_module_action]_sequenceNum_timestamp.format_extension.[compression_extension]
-
FileNamePrefix :(可选)如果提供了 FileNamePrefix ,
DBMS_CLOUD.EXPORT_DATA将使用文件名前缀为结果生成文件名。使用file_uri_list参数值中存储桶或目录名称之后提供的文本指定 FileNamePrefix 。不能为
file_uri_list中的 FileNamePrefix 提供多个值。 -
client_info_module_action :如果未随
file_uri_list参数一起提供文件名前缀,则DBMS_CLOUD.EXPORT_DATA将 client_info 、应用程序 module 和 action 的组合用作文件名前缀(当此信息可用时)。该过程从运行查询的数据库会话的应用程序信息中获取这些名称。有关 client_info 、 module 名称和 action 名称的信息,请参阅 Oracle Database 19c PL/SQL Packages and Types Reference 或 Oracle Database 26ai PL/SQL Packages and Types Reference 中的 DBMS_APPLICATION_INFO 。如果未随
file_uri_list一起提供文件名前缀并且数据库会话属性不可用,则DBMS_CLOUD.EXPORT_DATA将使用文件名前缀 "data"。 -
sequenceNum :与
DBMS_CLOUD.EXPORT_DATA查询关联的序号。存在一个或多个 sequenceNum ,具体取决于查询、数据库服务和 ECPU 数(如果数据库使用 OCPU,则为 OCPU)。此外,根据结果的大小,每个 sequenceNum 都有一个或多个输出文件。 -
timestamp :上载文件时的时间戳。
-
format_extension :缺省值取决于
formattype值:-
CSV 格式:
.csv -
JSON 格式:
.json -
PARQUET 格式
.parquet -
XML 格式:
.xml
有关更多信息,请参见 DBMS_CLOUD Package Format Options for EXPORT_DATA 中
format选项fileextension的说明。 -
-
compression_extension :将
format参数与值gzip的compression选项一起包含时,这是"gz"。如果
formattype为parquet,则compression值snappy也受支持,并且是缺省值。
例如,以下 DBMS_CLOUD.EXPORT_DATA 过程中的文件名前缀在 file_uri_list 参数中指定为 dept_export。该示例以指定格式将输出生成到提供的对象存储。
BEGIN
DBMS_CLOUD.EXPORT_DATA(
credential_name => 'DEF_CRED_NAME',
file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/dept_export',
query => 'SELECT * FROM DEPT',
format => JSON_OBJECT('type' value 'json'));
END;
/
指定文件名前缀时,生成的输出文件包括文件名前缀,类似于以下内容:
dept_export_1_20210809T173033Z.json
dept_export_2_20210809T173034Z.json
dept_export_3_20210809T173041Z.json
dept_export_4_20210809T173035Z.json
生成的输出文件数取决于自治 AI 数据库实例中的结果大小、数据库服务和 ECPU 数(如果数据库使用 OCPU,则为 OCPU)。
在以下示例中,file_uri_list 参数不包括文件名前缀,并且提供了值为 gzip 的 compression 参数:
BEGIN
DBMS_CLOUD.EXPORT_DATA(
credential_name => 'DEF_CRED_NAME',
file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/',
query => 'SELECT * FROM DEPT',
format => json_object('type' value 'json', 'compression' value 'gzip'));
END;
/
如果文件名前缀不在 file_uri_list 参数中,则 DBMS_CLOUD.EXPORT_DATA 使用以下格式的文件名前缀: client_info_module_action 。对于此示例,生成的输出文件包括 DBMS_CLOUD.EXPORT_DATA 提供的文件名前缀,并使用 gzip 压缩文件并添加文件扩展名 .gz,如下所示:
Client1_Module1_Action1_1_20210809T173033Z.json.gz
Client1_Module1_Action1_2_20210809T173034Z.json.gz
Client1_Module1_Action1_3_20210809T173041Z.json.gz
Client1_Module1_Action1_4_20210809T173035Z.json.gz
如果运行 DBMS_CLOUD.EXPORT_DATA 时 client_info_module_action 会话信息不可用,则文件名前缀将设置为 data。例如:
data_1_20210809T173033Z.json.gz
data_2_20210809T173034Z.json.gz
data_3_20210809T173041Z.json.gz
data_4_20210809T173035Z.json.gz
例如,以下 DBMS_CLOUD.EXPORT_DATA 过程中的文件名前缀在 file_uri_list 参数中指定为 dept_export。该示例将以指定格式将输出生成到提供的目录。
BEGIN
DBMS_CLOUD.EXPORT_DATA(
file_uri_list => 'DATA_PUMP_DIR:sales.json',
query => 'SELECT * FROM SALES',
format => JSON_OBJECT('type' value 'json'));
END;
/
指定文件名前缀时,生成的输出文件包含文件名前缀,类似于以下内容:
sales_1_20230705T124523275915Z.csv
有关使用 DBMS_CLOUD.EXPORT_DATA 进行文件命名的说明:
-
DBMS_CLOUD.EXPORT_DATA不会创建存储桶或目录。 -
DBMS_CLOUD.EXPORT_DATA生成的文件数取决于 ECPU 数(如果数据库使用 OCPU,则为 OCPU 数)、数据库服务以及结果数据的大小。 -
在
file_uri_list参数中提供目录对象名称时,以下内容适用:-
提供的目录必须存在,并且您必须对目录具有
WRITE访问权限。 -
将目录名称括在双引号中时,该名称区分大小写。
-
不能提供身份证明名称参数。
-
-
对于 CSV、JSON 或 XML 输出,默认情况下,当生成的文件包含 10MB 数据时,将创建新输出文件。但是,如果结果数据少于 10MB,则可能会有多个输出文件,具体取决于数据库服务和 Autonomous Database 实例的 ECPU 数(如果数据库使用 OCPU,则为 OCPU)。
对于 CSV、JSON 或 XML,默认输出文件块大小为 10MB。可以使用
format参数maxfilesize选项更改此值。有关更多信息,请参见 DBMS_CLOUD Package Format Options for EXPORT_DATA 。 -
对于 Parquet 输出,每个生成的文件都小于 128MB,并且可以生成多个输出文件。但是,如果结果数据少于 128MB,则可能会有多个输出文件,具体取决于数据库服务和 Autonomous Database 实例的 ECPU 数(如果数据库使用 OCPU,则为 OCPU)。
format参数maxfilesize选项不适用于 Parquet 文件。