将空 table 从 redshift 卸载到 s3 的行为如何?

How does unloading an empty table from redshift to s3 behaves?

如果使用 UNLOAD 命令将空 table 从 redshift 卸载到 S3,它会在 S3 上创建一个空文件还是什么都不做。

早些时候(几天前)我使用 unload 命令卸载,它在 s3 上放置了一个 0 字节的文件。但是今天它什么也没做(也就是说,没有文件放在 s3 上)但是 redshift 显示 "UNLOAD completed, 0 record(s) unloaded successfully" 消息。 即使在 UNLOAD 命令的选项中使用 HEADER(使用 headers 卸载)也不会在 s3 上显示任何文件。

UNLOAD ($$ SELECT * FROM <table_name> $$) TO 
's3://<bucket_name>/abc/test1' 
iam_role '<iam_role>' ADDQUOTES HEADER ALLOWOVERWRITE DELIMITER AS ',' 
ESCAPE PARALLEL OFF

卸载功能似乎从昨天开始发生了变化。空表在卸载时不生成文件。

根据 AWS 支持,当版本 >= 1.0.10880 中没有要卸载的数据时,他们已经回到创建空文件的旧 UNLOAD 行为。因此,版本 >= 1.0.10880 的 redshift 集群已修复并在所有区域可用。