管理 Snowflake 暂存区¶
snow stage 命令允许您执行其他特定暂存区的任务:
创建命名暂存区¶
如果命名暂存区尚不存在,则 snow stage create 命令会创建一个已命名的暂存区。
例如,要创建名为 new_stage 的暂存区,请输入以下命令:
下面的示例显示了如果您尝试创建一个已经存在的暂存区 packages,会发生什么情况。
如果要为存储在暂存区中的所有文件指定加密类型,请添加 --encryption 选项,以指定要完全加密 (SNOWFLAKE_FULL) 还是仅使用服务器端加密 (SNOWFLAKE_SSE)。
将文件复制到暂存区或从暂存区复制文件¶
借助 snow stage copy 命令,您可以将文件从本地计算机复制到暂存区,也可以将文件从暂存区复制到本地计算机,或者在命名暂存区之间复制。
请注意以下准则:
暂存区路径必须以
@开头,如以下示例所示。复制单个文件时,
<destination_path>必须标识目录,而不是文件。如果指定的目录不存在,则命令将创建目录。默认情况下,将本地目录复制到暂存区时,本地目录必须仅包含文件。您可以使用
--recursive选项上传本地目录中的子目录。您可以使用带有--recursive选项的 glob 模式。将目录从暂存区复制到本地文件系统时,该命令目前会将其内部树结构扁平化。举例来说,假设您的本地目录包含以下内容:
从暂存区复制目录后,本地文件系统目录包含以下内容:
备注
如果要维护源目录中的文件结构,则可以添加
--recursive选项。
将文件复制到暂存区¶
要将文件从本地计算机复制到暂存区,请输入类似于以下内容的命令:
您可以使用 snow stage list-files 命令来验证命令是否成功复制了文件:
从暂存区复制文件¶
要将文件从暂存区复制到本地计算机上的目录,请输入类似于以下内容的命令:
您可以列出目录内容以验证命令是否正确复制了文件:
请注意,本地目录必须存在。
您可以从用户暂存区 (@~) 进行复制:
在暂存区之间复制文件¶
您可以直接在两个命名暂存区之间复制文件,而无需先将它们下载到本地计算机。这对于组织不同暂存区的文件或创建备份非常有用。
要将文件从一个暂存区复制到另一个暂存区,请使用以下语法:
以下实例将 production_stage 中的所有文件复制到 backup_stage:
备注
当您在各个暂存区之间复制时,目标不能是用户暂存区 (@~)。您必须为源和目标指定命名暂存区。
使用 glob 模式指定文件¶
您可以通过对 source_path 实参使用 glob 模式来指定多个匹配正则表达式的文件。您必须将 glob 模式用单引号或双引号括起来。
以下示例将目录中的所有 .txt 文件复制到暂存区。
列出暂存区的内容¶
snow stage list-files 命令用于列出暂存区内容。
例如,要列出暂存区中的包,请输入以下命令:
从暂存区执行文件¶
备注
Snowflake CLI 不支持执行 Python 3.12 及以上版本的 Python 文件。
snow stage execute 命令会执行 SQL 或从暂存区执行 Python 文件。
对于
.sql文件,它对暂存区的.sql文件执行 EXECUTE IMMEDIATE FROM 命令。对于
.py文件,它执行一个会话范围的 Snowpark Python 过程。Snowflake CLI 会在 Snowflake 中执行该过程,以确保一致的执行环境。如果您的 Python 脚本需要额外的要求,您应该在与暂存区上的文件位于同一目录中的
requirements.txt文件中指定这些要求。snow stage execute命令仅支持来自 Snowflake Anaconda 通道的包。默认情况下,该命令按以下优先顺序查找
requirements.txt文件。命令的
stage_path参数中指定的暂存区路径。指定暂存区路径层次结构的父目录,直到到达该暂存区。
如果您不指定
requirements.txt文件,则该命令假定不需要其他包。
例如,如果您运行
snow stage execute @my_stage/ml/app1/scripts,命令将按如下方式查找文件:my_stage/ml/app1/scripts/requirements.txtmy_stage/ml/app1/requirements.txtmy_stage/ml/requirements.txtmy_stage/ml/requirements.txt
下面的示例说明了从暂存区执行不同 .sql 文件集的方法:
只指定暂存区名称,执行该暂存区中的所有
.sql文件:指定用户暂存区 (
@~),执行用户暂存区中的script.sql文件:
使用 glob 模式,选择文件的子集¶
指定一个类 glob 模式,以执行
dir目录中的所有.sql文件:指定类 glob 的模式,只执行
dir目录中以“script”开头、后跟一个字符的.sql文件:使用
--silent选项指定直接文件路径:
从暂存区移除文件¶
snow stage remove 命令会从暂存区中移除文件。
例如,要从暂存区移除文件,请输入类似于以下内容的命令: