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

Posted

技术标签:

【中文标题】将空表从 redshift 卸载到 s3 的行为如何?【英文标题】:How does unloading an empty table from redshift to s3 behaves? 【发布时间】:2019-10-31 17:21:45 【问题描述】:

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

早些时候(几天前)我使用卸载命令命令卸载,它在 s3 上放置了一个 0 字节的文件。但是今天它什么也没做(也就是说,s3 上没有放置文件),但 redshift 显示“卸载完成,0 条记录成功卸载”消息。 即使在 UNLOAD 命令的选项中使用 HEADER(使用标题卸载)也不会在 s3 上显示任何文件。

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

点评来源: 嗨,这篇文章似乎没有为问题提供answer;它更适合作为评论。

以上是关于将空表从 redshift 卸载到 s3 的行为如何?的主要内容,如果未能解决你的问题,请参考以下文章

将一张表从 RDS / postgres 加载到 Redshift

从 Redshift 卸载到 S3 时 JDBC 连接丢失。应该发生啥?

递归地将数据从 redshift 卸载到 S3 存储桶

Redshift卸载到S3非常慢

redshift 卸载操作导致冗余数据

使用 Airflow 将数据从 Redshift 卸载到 S3