通过snowsql执行PUT命令上传本地CSV到Snowflake表失败如何解决
Snowflake snowsql上传本地CSV文件操作&报错解决
253003报错属于本地到Snowflake底层云存储的请求连通失败,超过最大重试次数导致,按照以下步骤排查解决即可:
1. 修正PUT命令路径格式
Windows系统下snowsql的PUT命令不识别单反斜杠路径,需要替换为正斜杠或者双反斜杠,修正后的命令如下:
-- 用正斜杠写法(更推荐,不需要转义) put file://C:/Users/utkamishra/Downloads/data.csv @%mytable; -- 双反斜杠转义写法 put file://C:\\Users\\utkamishra\\Downloads\\data.csv @%mytable;
执行前先确认目标CSV文件没有被其他程序占用,路径拼写完全正确。
2. 解决网络连通问题(该报错最常见诱因)
- 关闭本地防火墙/杀毒软件临时测试,确认是否是安全工具拦截了snowsql的对外443端口请求
- 若处于公司内网环境,需确认IT部门已将Snowflake相关域名、对应Blob存储域名加入白名单,没有限制对外访问
- 若本地通过代理访问网络,需在snowsql启动时配置代理参数,或在snowsql配置文件中提前设置
http_proxy、https_proxy环境变量
3. 调整上传参数规避并发限制
若网络不稳定可以禁用并行上传,降低请求触发拦截的概率:
put file://C:/Users/utkamishra/Downloads/data.csv @%mytable PARALLEL=1;
4. 加载阶段数据到目标表
PUT命令仅会把文件上传到表的阶段中,不会直接写入表,上传完成后执行COPY INTO命令完成数据加载:
-- 标准CSV加载配置,若有特殊分隔符、表头可按需调整参数 COPY INTO mytable FILE_FORMAT = ( TYPE = CSV SKIP_HEADER = 1 -- 若CSV第一行是表头则加这个参数,没有就去掉 FIELD_OPTIONALLY_ENCLOSED_BY = '"' TRIM_SPACE = TRUE );
操作校验
- 执行
LIST @%mytable;可查看表阶段内的已上传文件,确认上传成功 - 数据加载完成后执行
SELECT * FROM mytable LIMIT 10;即可校验写入的内容是否正确
内容的提问来源于stack exchange,提问作者rita mishra
相关产品推荐
相关产品推荐

