将压缩文件插入RedShift

时间:2013-07-19 13:08:32

标签: amazon-redshift

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

文件是.zip而不是.gzip

3 个答案:

答案 0 :(得分:10)

根据Guy的评论,您无法直接将压缩文件插入Redshift。

假设这不是一次性任务,我建议使用AWS Data Pipeline来执行此项工作。 See this example of copy data between S3 buckets.修改示例以解压缩然后gzip您的数据,而不是简单地复制它。

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

Data Pipeline对于此类工作非常有效,因为它会自动启动和终止EC2资源,而且您不必担心在脚本中发现新实例的名称。

答案 1 :(得分:2)

添加gzip选项,请参阅:http://docs.aws.amazon.com/redshift/latest/dg/c_loading-encrypted-files.html 我们可以使用Java客户端来执行SQL

答案 2 :(得分:-2)

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

从's3:// abc/def/yourfilename.gz'复制mutable; CREDENTIALS' aws_access_key_id = xxxxx; aws_secret_access_key = yyyyyy'分隔符','的 gzip的