创建 S3 暂存区

外部(即 S3)暂存区指定数据文件的存储位置,以便可以将文件中的数据加载到表中。

可以直接从指定 S3 桶中的文件加载数据,无论是否带有文件夹路径(或 S3 术语中的前缀)。如果路径以 / 结尾,则加载相应 S3 文件夹中的所有对象。

备注

上一步 中,如果您按照说明配置具有访问外部 S3 桶所需的策略和权限的 AWS IAM 角色,则您已经创建了 S3 暂存区。您可以跳过此步骤并继续 从 S3 暂存区复制数据

本主题内容:

外部暂存区

除了直接从 S3 桶中的文件加载之外,Snowflake 还支持创建命名的外部暂存区,其中封装了暂存文件所需的所有信息,包括:

  • 暂存文件的 S3 桶。

  • 桶的命名存储集成对象或 S3 凭据(如果受保护)。

  • 加密密钥(如果桶中的文件已加密)。

命名的外部暂存区是可选的,但当您计划定期从同一位置加载数据时,建议 使用。

创建外部暂存区

您可以使用 SQL 或 Web 界面创建命名的外部暂存区。

备注

您必须使用被授予或继承对存储暂存区的数据库和架构的 USAGE 权限以及对架构的 CREATE STAGE 权限的角色。

有关 CREATE STAGE,请参阅 访问控制要求

使用 SQL 创建外部暂存区

使用 CREATE STAGE 命令通过 SQL 创建外部暂存区。

以下示例使用 SQL 创建名为 my_s3_stage 的外部暂存区,该暂存区引用名为 mybucket 的私密/受保护的 S3 桶以及名为 encrypted_files/ 的文件夹路径。CREATE 语句包括 选项 1:配置 Snowflake 存储集成以访问 Amazon S3 中创建的 s3_int 存储集成,用于访问 S3 桶。该暂存区引用名为 my_csv_format 的命名文件格式对象,该对象描述了存储在桶路径中的文件中的数据:

CREATE STAGE my_s3_stage
  STORAGE_INTEGRATION = s3_int
  URL = 's3://mybucket/encrypted_files/'
  FILE_FORMAT = my_csv_format;
Copy

备注

通过为暂存区指定命名的文件格式对象(或单个文件格式选项),以后就不必在用于从暂存区加载数据的 COPY 命令中指定相同的文件格式选项。

使用 Snowsight 创建外部暂存区

要使用 Snowsight 创建指定外部暂存区,请执行以下操作:

  1. 登录 Snowsight。

  2. 在导航菜单中,选择 Create » Stage » External Stage

  3. 选择文件所在的外部暂存区之一:Amazon S3Microsoft AzureGoogle Cloud Platform

  4. Create Stage 对话框中,输入 Stage Name

  5. 选择要在其中创建暂存区的数据库和架构。

  6. 输入外部云存储位置的 URL

  7. 如果外部存储不是公开的,请启用 Authentication 并输入详细信息。有关更多信息,请参阅 CREATE STAGE

  8. (可选)取消选择 Directory table。目录表允许您在暂存区中查看文件,但需要仓库,因此会产生费用。您可以选择暂时取消选择此选项,稍后再启用目录表。

    如果启用 Directory table,则可以选择 Enable auto-refresh,并选择事件通知或通知集成,以便在添加或删除文件时自动刷新目录表。要了解更多信息,请参阅 自动目录表元数据刷新

  9. 如果文件已加密,请启用 Encryption 并输入详细信息。

  10. (可选)展开 SQL Preview 以查看生成的 SQL 语句。若要为暂存区指定其他选项,例如 AUTO_REFRESH,可在工作表中打开此 SQL 预览。

  11. 选择 Create

使用 Classic Console 创建外部暂存区

选择 Databases Databases 选项卡 » <db_name> » Stages

下一步: 从 S3 暂存区复制数据

语言: 中文