使用Python+SnowSQL加载CSV:如何识别Snowflake用户阶段名称?
识别Snowflake可用阶段名称的方法
1. 查看全量可用阶段
直接在Snowflake Worksheet中执行以下SQL命令,可列出当前环境下所有类型的阶段:
SHOW STAGES;
执行结果会包含用户阶段、表阶段、自定义命名阶段的全部信息。
2. 不同阶段的名称规则与验证方式
用户阶段(User Stage):每个用户默认自带专属阶段,固定名称为
@~,无需提前创建。- 查看阶段内文件:
LIST @~; - 验证阶段存在:
DESCRIBE STAGE ~;
- 查看阶段内文件:
表阶段(Table Stage):每张表默认绑定对应的阶段,名称格式为
@%<表名>(例如表名为test_table,则阶段名为@%test_table)。- 查看阶段内文件:
LIST @%test_table; - 通过表结构确认:执行
DESCRIBE TABLE <表名>;,结果中的Stage Location字段即为该表阶段的路径。
- 查看阶段内文件:
命名阶段(Named Stage):需手动创建的自定义阶段(比如你代码中用到的
@test_results)。- 先确认阶段是否存在:执行
DESCRIBE STAGE test_results;,若报错则说明阶段未创建,需先执行创建命令:-- 创建内部命名阶段(无需依赖外部存储) CREATE STAGE test_results; - 在Snowflake UI中查看命名阶段:进入【Databases】→ 选择目标数据库 → 对应Schema → 点击【Stages】标签,即可看到该Schema下所有命名阶段。
- 先确认阶段是否存在:执行
补充:你的PUT命令潜在问题
代码中的路径格式化逻辑有误,os.getcwd()未被正确替换到路径中,应修改为:
file_path = 'file://{0}/XXXXX/YYYYYY/ZZZZZZ/TEST/Final.csv'.format(os.getcwd()) con.execute("PUT '{0}' @test_results".format(file_path))
同时需确保当前Snowflake连接拥有操作目标阶段的权限。
内容的提问来源于stack exchange,提问作者Nash
相关产品推荐
相关产品推荐

