从 Microsoft Azure 批量加载¶
如果您已经拥有 Microsoft Azure 账户并使用 Azure Blob 存储容器来存储和管理数据文件,则可以利用现有容器和文件夹路径,批量加载到 Snowflake 中。
备注
为加强安全态势,您可以将批量负载配置为使用专用连接,而不是公共互联网。有关更多信息,请参阅 Private connectivity to external stages and Snowpipe automation for Microsoft Azure。
这组主题介绍了如何使用 COPY 命令将数据从 Azure 容器加载到表中。
Snowflake 目前仅支持从 Blob 存储中加载。Snowflake 支持以下类型的存储账户:
Blob 存储
Data Lake Storage Gen2
常规用途 v1
General-purpose v2
Snowflake 不 支持 Data Lake Storage Gen1。
备注
支持从块、追加和页面 Blob 加载。卸载的文件被创建为块 Blob。有关这些 Blob 类型的信息,请参阅 Azure 关于 Blob 类型的文档 (https://docs.microsoft.com/en-us/rest/api/storageservices/understanding-block-blobs--append-blobs--and-page-blobs)。
如果在 Data Lake Storage Gen2 上启用了分层命名空间,则 Snowflake 不支持使用 COPY 命令清除文件。分层命名空间将数据组织成目录和子目录。Azure 只允许删除空目录,这意味着无法通过 COPY 命令使用 PURGE 选项递归删除目录。
如下图所示,从 Azure 容器加载数据分两步执行:
- 第 1 步:
Snowflake 假定数据文件已暂存在 Azure 容器中。如果尚未暂存,请使用 Microsoft 提供的上传接口/实用程序来暂存文件。
- 第 2 步:
使用 COPY INTO <table> 命令将暂存文件的内容加载到 Snowflake 数据库表中。您可以直接从桶中加载,但 Snowflake 建议创建一个引用该桶的外部暂存区,然后使用外部暂存区。
无论您使用哪种方法,如果您手动或在脚本中执行命令,此步骤都需要运行一个当前虚拟仓库的会话。仓库提供计算资源,以执行将行实际插入到表中的操作。
备注
只要您的 Snowflake 账户托管在 Azure 上,您的网络流量就不会穿过公共互联网。
后续主题:
配置任务(根据需要完成):
数据加载任务(针对您加载的每组文件完成):