使用 DBMS_CLOUD.EXPORT_DATA 将数据作为文本导出到对象存储
将 JSON 数据导出到云对象存储
显示通过指定查询将表数据从 Autonomous Database 导出为 JSON 数据的步骤。
此导出方法支持 Autonomous Database 支持的所有云对象存储,您可以使用 Oracle Cloud Infrastructure 资源主用户访问 Oracle Cloud Infrastructure 对象存储、Amazon 资源名称 (ARN) 访问 AWS Simple Storage Service (S3)、访问 Azure BLOB 存储的 Azure 服务主用户或访问 Google Cloud Platform (GCP) 资源的 Google 服务账户。
使用 DBMS_CLOUD.EXPORT_DATA
导出时的说明:
-
如果需要,您提供的
query
参数可以是高级查询,例如包含联接或子查询的查询。 -
使用
compression
选项指定format
参数以压缩输出文件。 -
如果不再需要导出的文件,请使用
DBMS_CLOUD.DELETE_OBJECT
过程或使用本机云对象存储命令删除这些文件。
将数据以 CSV 格式导出到云对象存储
显示通过指定查询将表数据从 Autonomous Database 导出为 CSV 数据的步骤。
此导出方法支持 Autonomous Database 支持的所有云对象存储。您还可以使用 Amazon Resource Names (ARN) 访问 AWS Simple Storage Service (S3),这是访问 Azure BLOB 存储的 Azure 服务主体,或者使用 Google 服务帐户访问 Google Cloud Platform (GCP) 资源。
使用 DBMS_CLOUD.EXPORT_DATA
导出时的说明:
-
如果需要,您提供的
query
参数可以是高级查询,例如包含联接或子查询的查询。 -
使用
compression
选项指定format
参数以压缩输出文件。 -
如果不再需要导出的文件,请使用
DBMS_CLOUD.DELETE_OBJECT
过程或使用本机云对象存储命令删除这些文件。
将数据作为参数导出到云对象存储
显示通过指定查询将表数据从 Autonomous Database 导出为 Cloud Object Storage 的步骤。
此导出方法支持 Autonomous Database 支持的所有云对象存储,您可以使用 Oracle Cloud Infrastructure 资源主用户访问 Oracle Cloud Infrastructure 对象存储、Amazon 资源名称 (ARN) 访问 AWS Simple Storage Service (S3)、访问 Azure BLOB 存储的 Azure 服务主用户或访问 Google Cloud Platform (GCP) 资源的 Google 服务账户。
使用 DBMS_CLOUD.EXPORT_DATA
导出时的说明:
-
如果需要,您提供的
query
参数可以是高级查询,例如包含联接或子查询的查询。 -
使用
compression
选项指定format
参数以压缩输出文件。type
parquet
的缺省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
类型提供精度和小数位数,则默认情况下使用精度 38 和小数位数 20。 NUMBER
类型不支持负比例。
Object Types
不支持
TIMESTAMP
支持,但存在以下限制:
- 如果有多个列具有不同的精度,则采用最高的精度。
TIMESTAMP WITH TIME ZONE
Oracle 数据类型将仅使用时间戳。
有关将
TIMESTAMP
导出到 Parquet 的 NLS 格式限制的详细信息,请参见 DBMS_CLOUD Package Oracle Data Type to Parquet Mapping 。
将数据作为 XML 导出到云对象存储
显示通过指定查询将表数据从 Autonomous Database 导出为 XML 数据的步骤。
此导出方法支持 Autonomous Database 支持的所有云对象存储。您还可以使用 Amazon Resource Names (ARN) 访问 AWS Simple Storage Service (S3),这是访问 Azure BLOB 存储的 Azure 服务主体,或者使用 Google 服务帐户访问 Google Cloud Platform (GCP) 资源。
使用 DBMS_CLOUD.EXPORT_DATA
导出时的说明:
-
如果需要,您提供的
query
参数可以是高级查询,例如包含联接或子查询的查询。 -
使用
compression
选项指定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
将使用文件名前缀为结果生成文件名。FileNamePrefix 是使用在file_uri_list
参数值中的存储桶或目录名称之后提供的文本指定的。不能为
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 23ai PL/SQL Packages and Types Reference 中的 DBMS_APPLICATION_INFO 。如果未随
file_uri_list
提供文件名前缀,并且数据库会话属性不可用,则DBMS_CLOUD.EXPORT_DATA
将使用文件名前缀 "data
"。 -
sequenceNum :与
DBMS_CLOUD.EXPORT_DATA
查询关联的序列号。根据查询、数据库服务和 ECPU(如果数据库使用 OCPU,则为 OCPU)的数量,有一个或多个 sequenceNum 。此外,根据结果的大小,每个 sequenceNum 都有一个或多个输出文件。 -
timestamp :上载文件的时间戳。
-
format_extension :默认值取决于
format
type
值:- CSV 格式:
.csv
- JSON 格式:
.json
- PARQUET 格式
.parquet
- XML 格式:
.xml
有关更多信息,请参见DBMS_CLOUD Package Format Options for EXPORT_DATA 中有关
format
选项fileextension
的说明。 - CSV 格式:
-
compression_extension :将
format
参数与compression
选项以及值gzip
结合使用时,这是"gz"
。当
format
type
为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
生成的输出文件数取决于 Autonomous Database 实例中的结果大小、数据库服务以及 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 文件。