用于批量文件管理的 DBMS_CLOUD

Prerequisites

作为开发人员,您可以将 DBMS_CLOUD 过程与部署在 Oracle Public Cloud、Multicloud 或 Exadata Cloud@Customer 上的自治 AI 数据库结合使用。

根据部署选择,必须满足以下先决条件,才能将 DBMS_CLOUD 过程与 Amazon S3、Azure Blob Storage 和 Google Cloud Storage 服务提供商结合使用。

用于批量文件管理的 DBMS_CLOUD 子程序概要

DBMS_CLOUD 程序包中用于批量文件操作的子程序。

子程序 说明
BULK_COPY 过程 此过程将文件从一个云对象存储桶复制到另一个云对象存储桶。
BULK_DELETE 过程 该过程从云对象存储存储桶或文件夹中删除文件。
BULK_DOWNLOAD 过程 此过程将文件从云对象存储存储桶下载到自治 AI 数据库中的目录。
BULK_MOVE 过程 此过程将文件从一个云对象存储桶移到另一个云对象存储桶。
BULK_UPLOAD 过程 此过程将文件从自治 AI 数据库中的目录上载到云对象存储。

BULK_COPY 过程

此过程会将文件从一个云对象存储桶批量复制到另一个云对象存储桶。使用重载表单可以使用 operation_id 参数。

您可以使用与 REGEXP_LIKE 运算符兼容的正则表达式模式来筛选要删除的文件列表。

源存储桶和目标存储桶或文件夹可以位于相同或不同的云对象存储提供程序中。

当源和目标位于不同的对象存储中或具有具有相同云提供商的不同账户时,您可以为源和目标位置提供单独的身份证明名称。

源身份证明名称默认情况下也由目标位置使用。

语法

DBMS_CLOUD.BULK_COPY (
      source_credential_name  IN  VARCHAR2 DEFAULT NULL,
      source_location_uri     IN  VARCHAR2,
      target_location_uri     IN  VARCHAR2,
      target_credential_name  IN  VARCHAR2 DEFAULT NULL,
      regex_filter            IN  VARCHAR2 DEFAULT NULL,
      format                  IN  CLOB     DEFAULT NULL
);
DBMS_CLOUD.BULK_COPY (
      source_credential_name  IN  VARCHAR2 DEFAULT NULL,
      source_location_uri     IN  VARCHAR2,
      target_location_uri     IN  VARCHAR2,
      target_credential_name  IN  VARCHAR2 DEFAULT NULL,
      regex_filter            IN  VARCHAR2 DEFAULT NULL,
      format                  IN  CLOB     DEFAULT NULL,
      operation_id            OUT NUMBER
);

参数

Parameter (参数) 说明
source_credential_name

用于访问云对象存储的身份证明的名称。

如果不提供 source_credential_name 值,则 credential_name 将设置为 NULL

source_location_uri

指定指向源对象存储存储桶或文件夹位置的 URI。

此参数是必需的。

云源文件 URI

您可以在云源文件 URI 中的文件名中使用通配符和正则表达式。

正则表达式只能在 regexuri format 参数设置为 TRUE 时使用。

regexuri 参数设置为 FALSE 时,字符 "*" 和 "?" 被视为通配符。当 regexuri 参数设置为 TRUE 时,字符 "*" 和 "?" 是指定正则表达式模式的一部分。

仅 URI 中的文件名或子文件夹路径支持正则表达式模式,模式匹配与 REGEXP_LIKE 函数执行的模式匹配相同。

使用正则表达式示例:

source_location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

使用通配符的示例:

source_location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o/year=????/month=??/*.csv

URI 的格式取决于您使用的云对象存储服务,有关详细信息,请参见 Cloud Object Storage URI Formats

有关 REGEXP_LIKE 条件的更多信息,请参见 Oracle Database 19c SQL Language ReferenceOracle Database 26ai SQL Language Reference 中的 REGEXP_LIKE Condition

target_location_uri

指定目标对象存储存储桶或文件夹的 URI,需要在其中复制文件。

此参数是必需的。

指定指向源对象存储存储桶或文件夹位置的 URI。

此参数是必需的。

URI 的格式取决于云对象存储服务。有关更多信息,请参见 DBMS_CLOUD Package File Cloud Object Storage URI Formats

target_credential_name

用于访问目标云对象存储位置的身份证明的名称。

如果不提供 target_credential_name 值,则 target_location_uri 将设置为 source_credential_name 值。

regex_filter

指定用于过滤文件的 REGEX 表达式。REGEX 表达式模式必须与 REGEXP_LIKE 运算符兼容。

如果不提供 regex_filter 值,则 regex_filter 将设置为 NULL

有关更多信息,请参见 REGEXP_LIKE Condition

format

指定文件操作的其他配置选项。这些选项指定为 JSON 字符串。

支持的格式选项包括:

  • logretention:它接受一个整数值,该整数值确定为批量操作保留状态表的持续时间(天)。

    默认值为 2 天。

  • logprefix:它接受用于确定批量操作状态表名称前缀字符串的字符串值。

    操作类型是默认值。对于 BULK_COPY,缺省的 logprefix 值为 COPYOBJ

  • priority:它接受一个字符串值,该值确定并发执行的文件操作数。

    优先级更高的操作会消耗更多数据库资源,并且运行速度应该更快。

    它接受以下值:

    • HIGH:确定使用数据库的 ECPU 计数(如果数据库使用 OCPU,则为 OCPU 计数)处理的并行文件数

    • MEDIUM:使用中等服务的并发限制确定同时进程数。默认值为 4。

    • LOW:按序列顺序处理文件。

    默认值为 MEDIUM

    最大并发文件操作数限制为 64。

如果不提供 format 值,则 format 将设置为 NULL

operation_id 使用此参数以 USER_LOAD_OPERATIONS 视图中相应 ID 的身份跟踪加载操作的进度和最终状态。

注:当源和目标 URI 指向同一对象存储存储桶或文件夹时,将返回错误。

范例

BEGIN
DBMS_CLOUD.BULK_COPY (
     source_credential_name => 'OCI_CRED',
     source_location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/o',
     target_location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
     format       => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
);
END;
/

BULK_DELETE 过程

此过程会批量删除云对象存储中的文件。使用重载表单可以使用 operation_id 参数。您可以使用与 REGEXP_LIKE 运算符兼容的正则表达式模式来筛选要删除的文件列表。

语法

DBMS_CLOUD.BULK_DELETE(
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL
);
DBMS_CLOUD.BULK_DELETE (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL,
     operation_id     OUT NUMBER
);

参数

Parameter (参数) 说明
credential_name

用于访问云对象存储的身份证明的名称。

如果不提供 credential_name 值,则 credential_name 将设置为 NULL

location_uri

指定指向自治 AI 数据库中的对象存储位置的 URI。

此参数是必需的。

云源文件 URI

您可以在云源文件 URI 中的文件名中使用通配符和正则表达式。

正则表达式只能在 regexuri format 参数设置为 TRUE 时使用。

regexuri 参数设置为 FALSE 时,字符 "*" 和 "?" 被视为通配符。当 regexuri 参数设置为 TRUE 时,字符 "*" 和 "?" 是指定正则表达式模式的一部分。

仅 URI 中的文件名或子文件夹路径支持正则表达式模式,模式匹配与 REGEXP_LIKE 函数执行的模式匹配相同。

例如:

location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

URI 的格式取决于您使用的云对象存储服务,有关详细信息,请参见 Cloud Object Storage URI Formats

有关 REGEXP_LIKE 条件的更多信息,请参见 Oracle Database 19c SQL Language ReferenceOracle Database 26ai SQL Language Reference 中的 REGEXP_LIKE Condition

URI 的格式取决于云对象存储服务。有关更多信息,请参见 DBMS_CLOUD Package File Cloud Object Storage URI Formats

regex_filter

指定用于过滤文件的 REGEX 表达式。REGEX 表达式模式必须与 REGEXP_LIKE 运算符兼容。

如果不提供 regex_filter 值,则 regex_filter 将设置为 NULL

有关更多信息,请参见 REGEXP_LIKE Condition

format

指定文件操作的其他配置选项。这些选项指定为 JSON 字符串。

支持的格式选项包括:

  • logretention:它接受一个整数值,该整数值确定为批量操作保留状态表的持续时间(天)。

    默认值为 2 天。

  • logprefix:它接受用于确定批量操作状态表名称前缀字符串的字符串值。

    操作类型是默认值。对于 BULK_DELETE,缺省的 logprefix 值为 DELETE

  • priority:它接受一个字符串值,该值确定并发执行的文件操作数。

    优先级较高的操作会消耗更多数据库资源,并且会更快地完成。

    它接受以下值:

    • HIGH:确定使用数据库的 ECPU 计数(如果数据库使用 OCPU,则为 OCPU 计数)处理的并行文件数。

    • MEDIUM:使用中等服务的并发限制确定同时进程数。默认值为 4。

    • LOW:按序列顺序处理文件。

    默认值为 MEDIUM

    最大并发文件操作数限制为 64。

如果不提供 format 值,则 format 将设置为 NULL

operation_id 使用此参数以 USER_LOAD_OPERATIONS 视图中相应 ID 的身份跟踪加载操作的进度和最终状态。

范例

BEGIN
DBMS_CLOUD.BULK_DELETE (
     credential_name => 'OCI_CRED',
     location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
     format          => JSON_OBJECT ('logretention' value 5, 'logprefix' value 'BULKDEL')
);
END;
/

BULK_DOWNLOAD 过程

此过程将文件从云对象存储下载到自治 AI 数据库目录中。使用重载表单可以使用 operation_id 参数。您可以使用与 REGEXP_LIKE 运算符兼容的正则表达式模式来筛选要下载的文件列表。

语法

DBMS_CLOUD.BULK_DOWNLOAD (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     directory_name   IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL
);
DBMS_CLOUD.BULK_DOWNLOAD (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     directory_name   IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL,
     operation_id     OUT NUMBER
);

参数

Parameter (参数) 说明
credential_name

用于访问云对象存储的身份证明的名称。

如果不提供 credential_name 值,则 credential_name 将设置为 NULL

location_uri

指定指向自治 AI 数据库中的对象存储位置的 URI。

此参数是必需的。

云源文件 URI

您可以在云源文件 URI 中的文件名中使用通配符和正则表达式。

正则表达式只能在 regexuri format 参数设置为 TRUE 时使用。

regexuri 参数设置为 FALSE 时,字符 "*" 和 "?" 被视为通配符。当 regexuri 参数设置为 TRUE 时,字符 "*" 和 "?" 是指定正则表达式模式的一部分。

仅 URI 中的文件名或子文件夹路径支持正则表达式模式,模式匹配与 REGEXP_LIKE 函数执行的模式匹配相同。

例如:

location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

URI 的格式取决于您使用的云对象存储服务,有关详细信息,请参见 Cloud Object Storage URI Formats

有关 REGEXP_LIKE 条件的更多信息,请参见 Oracle Database 19c SQL Language Reference 中的 REGEXP_LIKE ConditionOracle Database 26ai SQL Language Reference

directory_name

自治 AI 数据库上要从其中下载文件的目录的名称。

此参数是必需的。

regex_filter

指定用于过滤文件的 REGEX 表达式。REGEX 表达式模式必须与 REGEXP_LIKE 运算符兼容。

如果不提供 regex_filter 值,则 regex_filter 将设置为 NULL

有关更多信息,请参见 REGEXP_LIKE Condition

format

指定文件操作的其他配置选项。这些选项指定为 JSON 字符串。

支持的格式选项包括:

  • logretention:它接受一个整数值,该整数值确定为批量操作保留状态表的持续时间(天)。

    默认值为 2 天。

  • logprefix:它接受用于确定批量操作状态表名称前缀字符串的字符串值。对于 BULK_DOWNLOAD,缺省的 logprefix 值为 DOWNLOAD

    操作类型是默认值。

  • priority:它接受一个字符串值,该值确定并发执行的文件操作数。

    优先级较高的操作会消耗更多数据库资源,并且会更快地完成。

    它接受以下值:

    • HIGH:确定使用数据库的 ECPU 计数(如果数据库使用 OCPU,则为 OCPU 计数)处理的并行文件数。

    • MEDIUM:使用中等服务的并发限制确定同时进程数。默认值为 4。

    • LOW:按序列顺序处理文件。

    默认值为 MEDIUM

    最大并发文件操作数限制为 64。

如果不提供 format 值,则 format 将设置为 NULL

operation_id 使用此参数以 USER_LOAD_OPERATIONS 视图中相应 ID 的身份跟踪加载操作的进度和最终状态。

范例

BEGIN
DBMS_CLOUD.BULK_DOWNLOAD (
     credential_name => 'OCI_CRED',
     location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
     directory_name  => 'BULK_TEST',
     format          => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
 );
END;
/

BULK_MOVE 过程

此过程会将文件从一个云对象存储桶或文件夹批量移动到另一个云对象存储桶或文件夹。使用重载表单可以使用 operation_id 参数。

您可以使用与 REGEXP_LIKE 运算符兼容的正则表达式模式来筛选要删除的文件列表。

源存储桶和目标存储桶或文件夹可以位于相同或不同的云对象存储提供程序中。

当源和目标位于不同的对象存储中或具有具有相同云提供商的不同账户时,您可以为源和目标位置提供单独的身份证明名称。

未提供目标身份证明名称时,默认情况下目标位置也使用源身份证明名称。

移动文件的第一步是将文件复制到目标位置,然后在成功复制源文件后删除源文件。

如果对象存储允许在源位置和目标位置之间重命名操作,则会重命名而不是移动对象。

语法

DBMS_CLOUD.BULK_MOVE (
      source_credential_name  IN  VARCHAR2 DEFAULT NULL,
      source_location_uri     IN  VARCHAR2,
      target_location_uri     IN  VARCHAR2,
      target_credential_name  IN  VARCHAR2 DEFAULT NULL,
      regex_filter            IN  VARCHAR2 DEFAULT NULL,
      format                  IN  CLOB     DEFAULT NULL
);
DBMS_CLOUD.BULK_MOVE (
      source_credential_name  IN  VARCHAR2 DEFAULT NULL,
      source_location_uri     IN  VARCHAR2,
      target_location_uri     IN  VARCHAR2,
      target_credential_name  IN  VARCHAR2 DEFAULT NULL,
      regex_filter            IN  VARCHAR2 DEFAULT NULL,
      format                  IN  CLOB     DEFAULT NULL,
      operation_id            OUT NUMBER
);

参数

Parameter (参数) 说明
source_credential_name

用于访问源云对象存储的身份证明的名称。

如果不提供 source_credential_name 值,则 credential_name 将设置为 NULL

source_location_uri

指定指向源对象存储存储桶或文件夹位置的 URI。

此参数是必需的。

云源文件 URI

您可以在云源文件 URI 中的文件名中使用通配符和正则表达式。

正则表达式只能在 regexuri format 参数设置为 TRUE 时使用。

regexuri 参数设置为 FALSE 时,字符 "*" 和 "?" 被视为通配符。当 regexuri 参数设置为 TRUE 时,字符 "*" 和 "?" 是指定正则表达式模式的一部分。

仅 URI 中的文件名或子文件夹路径支持正则表达式模式,模式匹配与 REGEXP_LIKE 函数执行的模式匹配相同。

使用正则表达式示例:

source_location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

使用通配符的示例:

source_location_uri => 'https://objectstorage.my$region.oraclecloud.com/n/namespace-string/b/bucketname/o/year=????/month=??/*.csv

URI 的格式取决于您使用的云对象存储服务,有关详细信息,请参见 Cloud Object Storage URI Formats

有关 REGEXP_LIKE 条件的更多信息,请参见 Oracle Database 19c SQL Language ReferenceOracle Database 26ai SQL Language Reference 中的 REGEXP_LIKE Condition

target_location_uri

指定目标对象存储存储桶或文件夹的 URI,需要在其中移动文件。

此参数是必需的。

URI 的格式取决于您使用的云对象存储服务,有关详细信息,请参见 Cloud Object Storage URI Formats

target_credential_name

用于访问目标云对象存储位置的身份证明的名称。

如果不提供 target_credential_name 值,则 target_location_uri 将设置为 source_credential_name 值。

regex_filter

指定用于过滤文件的 REGEX 表达式。REGEX 表达式模式必须与 REGEXP_LIKE 运算符兼容。

如果不提供 regex_filter 值,则 regex_filter 将设置为 NULL

有关更多信息,请参见 REGEXP_LIKE Condition

format

指定文件操作的其他配置选项。这些选项指定为 JSON 字符串。

支持的格式选项包括:

  • logretention:它接受一个整数值,该整数值确定为批量操作保留状态表的持续时间(天)。

    默认值为 2 天。

  • logprefix:它接受用于确定批量操作状态表名称前缀字符串的字符串值。

    操作类型是默认值。对于 BULK_MOVE,缺省的 logprefix 值为 MOVE

  • priority:它接受一个字符串值,该值确定并发执行的文件操作数。

    优先级较高的操作会消耗更多数据库资源,并且会更快地完成。

    它接受以下值:

    • HIGH:确定使用数据库的 ECPU 计数(如果数据库使用 OCPU,则为 OCPU 计数)处理的并行文件数。

    • MEDIUM:使用中等服务的并发限制确定同时进程数。默认值为 4。

    • LOW:按序列顺序处理文件。

    默认值为 MEDIUM

    最大并发文件操作数限制为 64。

如果不提供 format 值,则 format 将设置为 NULL

operation_id 使用此参数以 USER_LOAD_OPERATIONS 视图中相应 ID 的身份跟踪加载操作的进度和最终状态。

范例

BEGIN
DBMS_CLOUD.BULK_MOVE (
     source_credential_name => 'OCI_CRED',
     source_location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/o',
     target_location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
     format                 => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKMOVE')
);
END;
/

注:当源和目标 URI 指向同一对象存储存储桶或文件夹时,将返回错误。

BULK_UPLOAD 过程

此过程将文件从自治 AI 数据库目录复制到云对象存储。使用重载表单可以使用 operation_id 参数。

语法

DBMS_CLOUD.BULK_UPLOAD (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     directory_name   IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL
);
DBMS_CLOUD.BULK_UPLOAD (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     directory_name   IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL,
     operation_id     OUT NUMBER
);

参数

Parameter (参数) 说明
credential_name

用于访问云对象存储的身份证明的名称。

如果不提供 credential_name 值,则 credential_name 将设置为 NULL

location_uri

指定指向要上载文件的对象存储位置的 URI。

此参数是必需的。

URI 的格式取决于云对象存储服务。有关更多信息,请参见 DBMS_CLOUD Package File Cloud Object Storage URI Formats

directory_name

自治 AI 数据库上从其中上载文件的目录的名称。

此参数是必需的。

目录

可以指定一个目录和一个或多个文件名,也可以使用逗号分隔的目录和文件名列表。指定目录的格式为:'MY_DIR:filename.ext'。默认情况下,目录名称 MY_DIR 是数据库对象,不区分大小写。文件名区分大小写。

在目录中指定文件名时,不支持正则表达式。只能使用通配符指定目录中的文件名。字符 "*" 可以用作表示多个字符的通配符,字符 "?" 可以用作表示单个字符的通配符。例如:'MY_DIR:*"'MY_DIR:test?'

要指定多个目录,请使用逗号分隔的目录列表:例如:'MY_DIR1:*, MY_DIR2:test?'

使用双引号指定区分大小写的目录名称。例如:'"my_dir1":*, "my_dir2":Test?'

要包含引号字符,请使用两个引号。例如:'MY_DIR:''filename.ext'。这指定 filename 以引号 (') 开头。

regex_filter

指定用于过滤文件的 REGEX 表达式。REGEX 表达式模式必须与 REGEXP_LIKE 运算符兼容。

如果不提供 regex_filter 值,则 regex_filter 将设置为 NULL

有关更多信息,请参见 REGEXP_LIKE Condition

format

指定文件操作的其他配置选项。这些选项指定为 JSON 字符串。

支持的格式选项包括:

  • logretention:它接受一个整数值,该整数值确定为批量操作保留状态表的持续时间(天)。

    默认值为 2 天。

  • logprefix:它接受用于确定批量操作状态表名称前缀字符串的字符串值。

    操作类型是默认值。对于 BULK_UPLOAD,缺省的 logprefix 值为 UPLOAD

  • priority:它接受一个字符串值,该值确定并发执行的文件操作数。

    优先级较高的操作会消耗更多数据库资源,并且会更快地完成。

    它接受以下值:

    • HIGH:确定使用数据库的 ECPU 计数(如果数据库使用 OCPU,则为 OCPU 计数)处理的并行文件数。

    • MEDIUM:使用中等服务的并发限制确定同时进程数。默认值为 4。

    • LOW:按序列顺序处理文件。

    默认值为 MEDIUM

    最大并发文件操作数限制为 64。

如果不提供 format 值,则 format 将设置为 NULL

operation_id 使用此参数以 USER_LOAD_OPERATIONS 视图中相应 ID 的身份跟踪加载操作的进度和最终状态。

范例

BEGIN
DBMS_CLOUD.BULK_UPLOAD (
     credential_name => 'OCI_CRED',
     location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
     directory_name  => 'BULK_TEST',
     format          => JSON_OBJECT ('logretention' value 5, 'logprefix' value 'BULKUPLOAD')
 );
END;
/

相关内容

对云中的文件执行批量操作