Windows PowerShell加载本地数据至Snowflake默认表阶段时遇文件不存在错误
问题描述
尝试通过Windows PowerShell使用Snowsql的PUT命令将本地CSV文件加载至Snowflake默认表阶段,已知Windows环境下语法为:
PUT 'file://<file_path>' @%<my_table>
已尝试以下两种写法及变体:
- a)
PUT 'file://C:\Users\asus pc\Downloads\Slate_data_files\Transactions_date_modified.csv' @%Transactions
- b)
PUT 'file://C:\Users\asus pc\Downloads\Slate_data_files\Transactions_date_modified.csv' @%Transactions AUTO COMPRESS= True OVERWRITE = True;
但始终报错:
253006 (n/a): File doesn't exist: ['C:Usersasus pcDownloadsSlate_data_filesTransactions_date_modified.csv']
此前曾在Snowsight加载S3桶数据时因日期格式问题未完全加载,修改本地CSV日期格式后改用Snowsql,确认文件路径正确且文件存在,但问题未解决。
问题原因
错误信息中的路径丢失了所有反斜杠分隔符,这是因为在Snowsql的字符串中,单个反斜杠\会被当作转义字符处理,导致路径中的分隔符被忽略,系统无法识别正确的文件路径。
解决方案
可以通过以下两种方式修正路径格式:
1. 使用双反斜杠转义分隔符
将路径中的单个反斜杠替换为双反斜杠,确保Snowsql正确解析路径:
PUT 'file://C:\\Users\\asus pc\\Downloads\\Slate_data_files\\Transactions_date_modified.csv' @%Transactions AUTO COMPRESS=True OVERWRITE=True;
2. 使用正斜杠代替反斜杠
Windows系统支持正斜杠作为路径分隔符,且Snowsql可以直接解析,这种方式更简洁:
PUT 'file://C:/Users/asus pc/Downloads/Slate_data_files/Transactions_date_modified.csv' @%Transactions AUTO COMPRESS=True OVERWRITE=True;
额外注意事项
- 确保在PowerShell中执行命令时,路径中的空格不需要额外转义,因为已经用单引号包裹了路径字符串。
- 确认当前Snowsql会话已连接到目标Snowflake数据库和模式,且对目标表
Transactions有足够的权限。
内容的提问来源于stack exchange,提问作者new_to_code
相关产品推荐
相关产品推荐

