Amazon redshift 将压缩文件插入红移

Amazon redshift 将压缩文件插入红移,amazon-redshift,Amazon Redshift,我有一个s3中的压缩文件。我想把它插入红移数据库。我的研究发现,实现这一点的唯一方法是启动ec2实例。将文件移动到那里,解压缩,并将其发送回S3。然后将其插入到我的红移表中。但我正试图从外部机器的JavaSDK来完成这一切,我不想使用Ec2实例。有没有办法让EMR作业解压缩文件?或者将压缩后的文件直接插入红移 文件是.zip而不是.gzip您不能根据Guy的评论将压缩文件直接插入Redshift 假设这不是一次性任务,我建议使用AWS数据管道来执行这项工作。将示例修改为解压然后gzip您的数据,

我有一个s3中的压缩文件。我想把它插入红移数据库。我的研究发现,实现这一点的唯一方法是启动ec2实例。将文件移动到那里,解压缩,并将其发送回S3。然后将其插入到我的红移表中。但我正试图从外部机器的JavaSDK来完成这一切,我不想使用Ec2实例。有没有办法让EMR作业解压缩文件?或者将压缩后的文件直接插入红移


文件是.zip而不是.gzip

您不能根据Guy的评论将压缩文件直接插入Redshift

假设这不是一次性任务,我建议使用AWS数据管道来执行这项工作。将示例修改为解压然后gzip您的数据,而不是简单地复制它

使用
ShellCommandActivity
执行执行工作的shell脚本。如果您选择并适当使用AMI作为EC2资源(YMMV),我假设这个脚本可以调用Java


对于这种类型的工作,数据管道非常高效,因为它将自动启动和终止EC2资源,而且您不必担心在脚本中发现新实例的名称。

添加
gzip
选项,请参阅:
我们可以使用Java客户端执行SQL

,如果您的文件是gzip,请尝试下面的命令


从's3://abc/def/yourfilename.gz'凭证'aws\u access\u key\u id=xxxxx'复制可变文件;aws_secret_access_key=yyyyyy‘delimiter’,“gzip

红移支持gzip作为压缩输入的方式(降低S3成本和加快加载时间)。在您的COPY命令中使用GZIP标志。有一种情况,文件是压缩的(我无法控制)而不是GZIP。是否有压缩选项?据我所知,还没有。您将需要对其进行升级和gzip。你可以用Java来实现这一点,并通过正确的压缩将其返回到S3