Snowflake数据卸载至S3报错:COPY语句仅支持简单SELECT导入语句
Snowflake卸载Parquet到S3报错的原因及解决办法
报错原因
HEADER = true是针对CSV、TSV这类文本格式设计的参数,Parquet作为列存储格式完全不需要这个设置——Parquet文件本身会将列名存储在元数据中,无需额外指定表头。- 当你添加
HEADER = true后,Snowflake会误将该操作识别为导入文本文件的操作(HEADER是导入文本时的常用参数),但你的语句实际是从表卸载数据到Stage,逻辑冲突就触发了COPY statement only supports simple SELECT from stage statements for import的报错。
解决办法
直接移除语句中的HEADER = true参数即可,恢复为之前可正常执行的版本:
COPY INTO "@DATABASE.SCHEMA.MY_STAGE/my_view/year=2023/month=04/day=21/my_view_data.parquet" FROM ( SELECT * FROM my_table WHERE to_date(event_time) = '2023-04-21' )
- 补充说明:如果需要确认Parquet文件的列信息,直接查询Stage上的文件或下载后用工具打开即可,Parquet文件已自带完整的列元数据,无需额外处理表头。
内容的提问来源于stack exchange,提问作者Bruno Vieira
相关产品推荐
相关产品推荐

