GET¶
将数据文件从以下 内部暂存区 类型之一下载到客户端计算机上的本地目录或文件夹:
已命名的内部暂存区。
指定表的内部暂存区。
当前用户的内部暂存区。
您可以使用 COPY INTO <location> 命令,在将数据从表卸载到 Snowflake 暂存区后下载数据文件。
- 另请参阅:
语法¶
GET internalStage file://<local_directory_path>
[ PARALLEL = <integer> ]
[ PATTERN = '<regex_pattern>'' ]
其中:
internalStage ::= @[<namespace>.]<int_stage_name>[/<path>] | @[<namespace>.]%<table_name>[/<path>] | @~[/<path>]
必填参数¶
internalStage
指定 Snowflake 中下载文件的位置:
@[namespace.]int_stage_name[/path]
从指定的命名内部暂存区下载文件。
@[namespace.]%table_name[/path]
从指定表的暂存区下载文件。
@~[/path]
从当前用户的暂存区下载文件。
其中:
namespace
是已命名的内部暂存区或表所在的数据库和/或架构。如果数据库和架构当前正在用户会话中使用,则此参数为 选填;否则,为必填。path
是云存储位置中文件的可选路径(即文件的名称以公共字符串开头),且区分大小写,用于限制对一组文件的访问。不同的云存储服务也可以将路径称为 前缀 或 文件夹。如果指定了path
,但路径中没有显式命名文件,则下载路径中的所有数据文件。
备注
如果暂存区名称包含空格或特殊字符,则必须将其放在单引号内(例如,对于命名为
"my stage"
的暂存区,格式为'@"my stage"'
)。file://local_directory_path
指定客户端计算机上下载文件所在的本地目录路径:
- Linux/macOS:
您必须在路径中包含初始正斜杠(例如
file:///tmp/load
)。如果目录路径包含特殊字符,则整个文件 URI 必须放在单引号内。
- Windows:
您必须在路径中包含驱动器和反斜杠(例如
file://C:tempload
)。如果目录路径包含特殊字符,则整个文件 URI 必须放在单引号内。请注意,驱动器和路径分隔符在引号内的 URIs 中是正斜杠 (
/
)(例如,'file://C:/temp/load data'
表示 Windows 中包含名为load data
的目录)。
可选参数¶
PARALLEL = integer
指定用于下载文件的线程数。下载的粒度单位是一个文件。
增加线程数可以提高下载大文件时的性能。
支持的值:从
1
(无并行性)到99
(使用 99 个线程下载文件)之间的任何整数值。默认:
10
PATTERN = 'regex_pattern'
指定用于筛选要下载的文件的正则表达式模式。该命令列出指定
path
中的所有文件,并对找到的每个文件应用正则表达式模式。默认:无值(下载指定暂存区中的所有文件)
使用说明¶
GET 不 支持以下操作:
从外部暂存区下载文件。要从外部暂存区下载文件,请使用云服务提供的实用程序。
下载具有不同目录路径的多个文件。该命令在将文件传输到客户端计算机时 不 保留暂存区目录结构。
例如,以下 GET 语句返回错误,因为您无法下载位于暂存区的不同子目录中,名为
tmp.parquet
的多个文件。GET @my_int_stage my_target_path PATTERN = "tmp.parquet";
ODBC 驱动程序 支持使用在以下平台上托管的 Snowflake 账户执行 GET:
Amazon Web Services(使用 ODBC 驱动程序版本 2.17.5 及更高版本)。
Google Cloud Platform(使用 ODBC 驱动程序版本 2.21.5 及更高版本)。
Microsoft Azure(使用 ODBC 驱动程序版本 2.20.2 及更高版本)。
该命令无法从任一 Snowflake Web 界面中的 Worksheets 选项卡页面执行;相反,请使用 SnowSQL 客户端下载数据文件,或检查特定 Snowflake 客户端的文档以验证对此命令的支持。
该命令不会重命名文件。
下载的文件将使用与上传(使用 PUT)或从表中卸载(使用 COPY INTO <location>)时加密文件相同的密钥自动解密。
示例¶
将 mytable
表暂存区中的所有文件下载到 /tmp/data
本地目录(在 Linux 或 macOS 环境中):
GET @%mytable file:///tmp/data/;
将当前用户的暂存区中的 myfiles
路径下的文件下载到 /tmp/data
本地目录(在 Linux 或 macOS 环境中):
GET @~/myfiles file:///tmp/data/;