数据卸载概述¶
与数据加载类似,Snowflake 支持将数据从数据库表批量导出(即卸载)到带分隔符的平面文本文件中。
本主题内容:
批量卸载流程¶
将数据卸载到文件中的流程与加载流程相同,但在如下情况则相反:
- 第 1 步:
使用 COPY INTO <location> 命令将数据从 Snowflake 数据库表复制到 Snowflake 或外部暂存区中的一个或多个文件中。
- 第 2 步:
从以下暂存区下载文件:
在 Snowflake 暂存区,使用 GET 命令下载数据文件。
在 S3 中,使用 Amazon S3 提供的接口/工具获取数据文件。
在 Azure 中,使用 Microsoft Azure 提供的接口/工具获取数据文件。
使用查询来批量卸载¶
Snowflake 支持在 COPY INTO <location> 命令中指定一个 SELECT 语句,而不是指定一表。查询结果将写入命令中指定的一个或多个文件,文件将存储在指定位置(内部或外部)。
COPY 语句中的 SELECT 查询支持 Snowflake SQL 查询的完整语法和语义,包括 JOIN 子句,允许从多张格下载数据。
批量卸载到单个或多个文件¶
COPY INTO <location> 命令提供了一个复制选项 (SINGLE),用于将数据卸载到单个或多个文件。默认值为 SINGLE = FALSE(即卸载到多个文件)。
Snowflake 为每个文件分配一个唯一的名称。为命令指定的位置路径可以包含分配给生成的所有数据文件的文件名前缀。如果未指定前缀,则 Snowflake 会在生成的文件名前加上 data_
前缀。
Snowflake 附加一个后缀,确保每个文件名在并行执行线程中是唯一的;例如 data_stats_0_1_0
。
将数据卸载到多个文件时,请使用 MAX_FILE_SIZE 复制选项来指定每个已创建文件的最大大小。
分区数据卸载¶
COPY INTO <location> 命令包括一个 PARTITION BY 复制选项,用于将数据分区卸载到暂存区。
在卸载操作期间对数据进行分区的功能支持各种用例,例如使用 Snowflake 转换数据以输出到数据湖。此外,将数据分区卸载到云存储中的目录结构中可以提高第三方工具使用数据的效率。
PARTITION BY 复制选项接受一个表达式,通过该表达式,卸载操作将表行分区到已卸载到指定暂存区的单独文件。
使用 COPY 命令卸载数据任务¶
有关与卸载数据关联的任务的更多信息,请参阅: