卸载到 Microsoft Azure

如果您已经拥有 Microsoft Azure 账户并使用 Azure 容器存储和管理文件,则可以在从 Snowflake 表卸载数据时使用现有容器和文件夹路径。本主题介绍如何使用 COPY 命令来将数据从表卸载到 Azure 容器。然后,您可以将卸载的数据文件下载到本地文件系统。

Snowflake 支持以下类型的 Blob 存储账户:

  • Blob 存储

  • Data Lake Storage Gen2

  • 常规用途 v1

  • General-purpose v2

Snowflake 支持 Data Lake Storage Gen1。

如下图所示,将数据卸载到 Azure 容器的操作分为两个步骤:

第 1 步:

使用 COPY INTO <location> 命令,将 Snowflake 数据库表中的数据复制到 Azure 容器桶中的一个或多个文件。在该命令中,可以指定引用 Azure 容器(推荐)的指定外部暂存区对象,也可通过指定容器的 URI 和安全凭据(如果需要)来选择直接卸载到容器。

无论您使用哪种方法,如果您手动或在脚本中执行命令,此步骤都需要运行一个当前虚拟仓库的会话。仓库提供计算资源来从表中写入行。

第 2 步:

使用 Microsoft 提供的接口/工具从 Azure 容器下载文件。

将数据卸载到 Azure

小技巧

这组主题中的说明假设您已阅读 准备卸载数据,并已按需创建命名的文件格式。

在开始之前,您可能还需要阅读 数据卸载注意事项 获取最佳实践、提示和其他指导。

本主题内容:

允许 Azure 虚拟网络子网 IDs

如果您组织中的 Azure 管理员尚未明确授予 Snowflake 访问 Azure 存储账户的权限,可以现在执行此操作。请遵循数据加载配置说明 允许 VNet 子网 IDs 中的步骤操作。

配置 Azure 容器以卸载数据

要允许 Snowflake 写入 Azure 容器,必须配置对存储账户的访问权限。有关说明,请参阅 配置 Azure 容器以加载数据。请注意,我们提供了一组说明,其中指出了数据加载或卸载操作所需的具体权限。

将数据卸载到外部暂存区

外部暂存区是指定的数据库对象,为数据卸载提供最大程度的灵活性。因为它们是数据库对象,所以可以将指定暂存区的权限授予任何角色。

您可以使用 Web 界面或 SQL 来创建指定的外部暂存区:

Classic Console:

点击 Databases Databases 选项卡 » <db_name> » Stages

SQL:

CREATE STAGE

创建命名暂存区

以下示例使用名为 mycontainer 的容器来创建名为 my_ext_unload_stage 的外部暂存区,文件夹路径名为 unload。该暂存区引用名为 my_csv_unload_format 的指定文件格式对象,该对象在 准备卸载数据 步骤中创建:

CREATE OR REPLACE STAGE my_ext_unload_stage
  URL='azure://myaccount.blob.core.windows.net/mycontainer/unload'
  CREDENTIALS=(AZURE_SAS_TOKEN='?sv=2016-05-31&ss=b&srt=sco&sp=rwdl&se=2018-06-27T10:05:50Z&st=2017-06-27T02:05:50Z&spr=https,http&sig=bgqQwoXwxzuD2GJfagRg7VOS8hzNr3QLT7rhS8OFRLQ%3D')
  ENCRYPTION=(TYPE='AZURE_CSE' MASTER_KEY = 'kPxX0jzYfIamtnJEUTHwq80Au6NbSgPH5r4BDDwOaO8=')
  FILE_FORMAT = my_csv_unload_format;
Copy

备注

blob.core.windows.net 端点用于所有受支持类型的 Azure Blob 存储账户,包括 Data Lake Storage Gen2。

请注意,本示例中使用的 AZURE_SAS_TOKEN 和 MASTER_KEY 的值仅用于说明目的。

将数据卸载到命名暂存区

  1. 通过外部暂存区,使用 COPY INTO <location> 命令将表中数据卸载到 Azure 容器。

    以下示例使用 my_ext_unload_stage 暂存区将 mytable 表中的所有行卸载到 Azure 容器中的一个或多个文件。将 d1 文件名前缀应用于文件:

    COPY INTO @my_ext_unload_stage/d1 from mytable;
    
    Copy
  2. 使用 Azure 提供的工具从容器中检索对象(即命令生成的文件)。

将数据直接卸载到 Azure 容器

  1. 使用 COPY INTO <location> 命令将数据从表直接卸载到指定的 Azure 容器。此选项非常适合用于临时卸载,当您未计划使用相同的表和容器参数定期卸载数据时,不妨加以使用。

    必须为 Azure 容器指定 URI,并在 COPY 命令中指定用于访问容器的安全凭据。

    以下示例将 mytable 表中的所有行卸载到 Azure 容器中一个或多个文件夹路径前缀为 unload/ 的文件:

    此示例引用由账户管理员(即具有 ACCOUNTADMIN 角色的用户)或具有全局 CREATE INTEGRATION 权限的角色使用 CREATE STORAGE INTEGRATION 创建的存储集成。通过存储集成,用户不必提供凭据即可访问私有存储位置:

    COPY INTO 'azure://myaccount.blob.core.windows.net/mycontainer/unload/' FROM mytable STORAGE_INTEGRATION = myint;
    
    Copy
  2. 使用 Azure 控制台(或同等客户端应用程序)从容器中检索对象(即命令生成的文件)。

语言: 中文