GET

将数据文件从以下 内部暂存区 类型之一下载到客户端计算机上的本地目录或文件夹:

  • 已命名的内部暂存区。

  • 指定表的内部暂存区。

  • 当前用户的内部暂存区。

您可以使用 COPY INTO <location> 命令,在将数据从表卸载到 Snowflake 暂存区后下载数据文件。

另请参阅:

LISTPUTREMOVECOPY FILES

语法

GET internalStage file://<local_directory_path>
    [ PARALLEL = <integer> ]
    [ PATTERN = '<regex_pattern>'' ]
Copy

其中:

internalStage ::=
    @[<namespace>.]<int_stage_name>[/<path>]
  | @[<namespace>.]%<table_name>[/<path>]
  | @~[/<path>]
Copy

必填参数

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 的目录)。

备注

如果将文件名指定为路径的一部分,则 GET 命令将返回错误,除非您使用 JDBC 驱动程序ODBC 驱动程序。如果在使用任一驱动程序时指定文件名,则驱动程序会将文件名视为目录路径的一部分,并使用指定的文件名创建子目录。

例如,如果指定 file:///tmp/load/file.csv,则 JDBC 或 ODBC 驱动程序会在路径 /tmp/load/ 下创建名为 file.csv/ 的子目录。然后,GET 命令将暂存文件下载到此新子目录中。

可选参数

PARALLEL = integer

指定用于下载文件的线程数。下载的粒度单位是一个文件。

增加线程数可以提高下载大文件时的性能。

支持的值:从 1 (无并行性)到 99 (使用 99 个线程下载文件)之间的任何整数值。

默认:10

PATTERN = 'regex_pattern'

指定用于筛选要下载的文件的正则表达式模式。该命令列出指定 path 中的所有文件,并对找到的每个文件应用正则表达式模式。

默认:无值(下载指定暂存区中的所有文件)

使用说明

  • GET 支持以下操作:

    • 从外部暂存区下载文件。要从外部暂存区下载文件,请使用云服务提供的实用程序。

    • 下载具有不同目录路径的多个文件。该命令在将文件传输到客户端计算机时 保留暂存区目录结构。

      例如,以下 GET 语句返回错误,因为您无法下载位于暂存区的不同子目录中,名为 tmp.parquet 的多个文件。

      GET @my_int_stage my_target_path PATTERN = "tmp.parquet";
      
      Copy
  • 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 Worksheet 选项卡 选项卡页面执行;相反,请使用 SnowSQL 客户端下载数据文件,或检查特定 Snowflake 客户端的文档以验证对此命令的支持。

  • 该命令不会重命名文件。

  • 下载的文件将使用与上传(使用 PUT)或从表中卸载(使用 COPY INTO <location>)时加密文件相同的密钥自动解密。

示例

mytable 表暂存区中的所有文件下载到 /tmp/data 本地目录(在 Linux 或 macOS 环境中):

GET @%mytable file:///tmp/data/;
Copy

将当前用户的暂存区中的 myfiles 路径下的文件下载到 /tmp/data 本地目录(在 Linux 或 macOS 环境中):

GET @~/myfiles file:///tmp/data/;
Copy
语言: 中文