管理目录表

本主题提供了有关使用目录表创建和管理外部或内部暂存区的说明。

使用目录表创建暂存区

本部分将说明如何(使用 CREATE STAGE)创建暂存区,暂存区可用于分层目录表,进而存储有关暂存文件的元数据。

内部暂存区的目录表需要进行 手动元数据刷新。您还可以选择在外部暂存区包含目录表,并手动刷新元数据。有关自动元数据刷新的信息,请参阅 自动元数据刷新

使用目录表创建暂存区的语法与创建标准外部或内部暂存区几乎相同。将可选的 DIRECTORY 参数设置为 TRUE。

有关完整语法和参数说明,请参阅 CREATE STAGE。要将目录表添加到现有暂存区,请使用 ALTER STAGE ...SET DIRECTORY 命令。

备注

创建启用了目录表的暂存区后,您 必须 执行 ALTER STAGE ... REFRESH 以手动刷新目录表元数据。

示例

创建名为 mystage 的内部暂存区,其中包括一个目录表。该暂存区引用名为 myformat 的文件格式:

CREATE STAGE mystage
  DIRECTORY = (ENABLE = TRUE)
  FILE_FORMAT = myformat;
Copy

创建名为 mystage 的外部暂存区,其中包括一个目录表。该暂存区引用名为 load 的桶或容器,其中包含 files 路径。通过 my_storage_int 存储集成提供对云存储位置的安全访问:

备注

URL 值中的存储位置必须以正斜杠 (/) 结尾。

Amazon S3

CREATE STAGE mystage
  URL='s3://load/files/'
  STORAGE_INTEGRATION = my_storage_int
  DIRECTORY = (ENABLE = TRUE);
Copy

Google Cloud Storage

CREATE STAGE mystage
  URL='gcs://load/files/'
  STORAGE_INTEGRATION = my_storage_int
  DIRECTORY = (ENABLE = TRUE);
Copy

Microsoft Azure

CREATE STAGE mystage
  URL='azure://myaccount.blob.core.windows.net/load/files/'
  STORAGE_INTEGRATION = my_storage_int
  DIRECTORY = (ENABLE = TRUE);
Copy

刷新目录表元数据

自动刷新

您可以使用云存储服务的事件消息服务自动刷新目录表的元数据。要配置自动刷新,请参阅 自动目录表元数据刷新

手动刷新

备注

  • 在外部暂存区上手动刷新会阻止同时进行自动刷新。手动刷新完成后,自动刷新将恢复。

  • 手动刷新会在暂存区上执行列表操作,对于大型或快速增长的暂存区来说,手动刷新可能会很慢或成本很高。请改用基于事件的 自动刷新

要手动刷新目录表中的元数据,请使用 ALTER STAGE 命令。

为获得最佳性能,请将选择性的 SUBPATHALTER STAGE 配合使用。这样做可以减少需要列出和检查的文件数量。要了解如何按路径组织数据,请参阅 暂存数据文件的最佳实践

例如:

ALTER STAGE my_stage REFRESH SUBPATH = '2024/01/31';
Copy

该命令返回以下列:

描述

file

暂存源文件的名称和文件的相对路径。

status

状态:REGISTERED_NEW、REGISTERED_UPDATE、REGISTER_SKIPPED、REGISTER_FAILED、UNREGISTERED 或 UNREGISTER_FAILED。

description

文件注册状态的详细说明。

语言: 中文