为从雪花中卸载的文件设置文件名

Posted

技术标签:

【中文标题】为从雪花中卸载的文件设置文件名【英文标题】:Set file name for unloaded file from Snowflake 【发布时间】:2020-03-23 17:53:03 【问题描述】:

我正在使用以下命令将雪花数据卸载到外部 AWS S3 stg,

copy into '@ext_stg/path/file_name' 
from schema.table
file_format = (type=csv  field_delimiter= '~' compression='gzip' null_if=('','NULL', 'null',' ') field_optionally_enclosed_by= '"' )
OVERWRITE = TRUE
; 

我希望卸载的文件名是 file_name.csv.gz

但我实际上从上面的代码中得到的是,file_name_0_3_0.csv.gz

如何将所需的文件名设置为 file_name.csv.gz

【问题讨论】:

【参考方案1】:

设置SINGLE=TRUE MAX_FILE_SIZE=5000000000 给了我想要的输出。谢谢@waldente

【讨论】:

【参考方案2】:

您似乎试图指定 csv 扩展名两次。尝试将其从 S3 路径中删除,因为文件扩展名已在 file_format 中指定。

复制到'@ext_stg/path/file_name.csv'

来自 schema.table

file_format = (type=csv field_delimiter= '~' compression='gzip' null_if=('','NULL', 'null',' ') field_optionally_enclosed_by= '"' )

覆盖 = 真 ;

【讨论】:

谢谢。我仍然将 _0_3_0 附加到文件名。如何解决这个问题? 在分号前试试SINGLE=TRUE MAX_FILE_SIZE=5000000000

以上是关于为从雪花中卸载的文件设置文件名的主要内容,如果未能解决你的问题,请参考以下文章

雪花:卸载时复制命令不会为多个文件生成恒定大小

将 Node.js 对象设置为从文件读取的数据

使用分区的雪花到 Hive 数据移动

雪花如何在内部执行更新?

Inno Setup 中如何设置卸载文件的位置

将雪花中的数据卸载到 Postgres 中?