UNLOAD Redshift:追加

Vzz*_*arr 1 amazon-s3 amazon-web-services amazon-redshift

我想将Redshift 表中的数据卸载到已经存在的 S3 文件夹中,类似于 Spark 中使用写入选项“ append ”发生的情况(因此,如果目标文件夹已存在,则在目标文件夹中创建新文件)。

我知道 ALLOWOVERWRITE 选项,但这会删除已经存在的文件夹。

Redshift 支持吗?如果不是,建议采用什么方法?(无论如何,我相信这将是一个理想的功能......)

nic*_*r88 5

可以解决该问题的一种解决方案是在文件夹后附加另一个唯一的后缀,例如

unload ('select * from my_table') 
to 's3://mybucket/first_folder/unique_prefix_' iam_role 
'arn:aws:iam::0123456789012:role/MyRedshiftRole'; 
Run Code Online (Sandbox Code Playgroud)

unique_prefix_如果您在第一级之后添加folder,则所有新文件都将unique_prefix_在卸载操作期间以您的开头,因此您不需要任何ALLOWOVERWRITE. 这种方法的唯一问题是,如果您卸载了数据更改,则可能会为卸载的数据使用混合架构。