Snowflake使用COPY INTO导出至S3时自定义contractid命名文件咨询
实现COPY INTO导出文件按ContractID命名为[ContractID].csv
要让Snowflake导出的文件直接以ContractID.csv格式命名,需要结合PARTITION BY和FILE_NAME参数来实现,具体修改如下:
修改后的SQL代码
COPY INTO @DEV_TEST/TEST_AMOUNT/LOANS/2024/11/Q4_2024_TEST/ FROM ( SELECT * FROM DEV.TEST_DATA ) PARTITION BY (ContractID) -- 按ContractID拆分数据分区 FILE_NAME = ('$PARTITION.csv') -- 用分区变量指定文件名,格式为[ContractID].csv FILE_FORMAT=( TYPE = CSV ESCAPE = NONE ESCAPE_UNENCLOSED_FIELD = NONE COMPRESSION = NONE NULL_IF='NULL' ) HEADER = TRUE MAX_FILE_SIZE = 5000000000; -- 确保单个ContractID的数据不超过此大小,避免拆分多文件
关键说明
PARTITION BY (ContractID):将数据集按ContractID字段拆分,每个唯一的ContractID对应一个独立的数据分区FILE_NAME = ('$PARTITION.csv'):Snowflake的$PARTITION变量会自动替换为当前分区的ContractID值,最终生成的文件名就是[ContractID].csv(例如12345.csv)- 如果某个ContractID的数据量超过
MAX_FILE_SIZE设置的大小,Snowflake会自动拆分多个文件,命名格式变为[ContractID]_001.csv、[ContractID]_002.csv,需根据实际数据量调整MAX_FILE_SIZE值
内容的提问来源于stack exchange,提问作者gayathri
相关产品推荐
相关产品推荐

