Amazon s3 PgSQL-使用标题将select查询数据直接导出到AmazonS3

Amazon s3 PgSQL-使用标题将select查询数据直接导出到AmazonS3,amazon-s3,amazon-redshift,Amazon S3,Amazon Redshift,我有这样的要求,我需要将报告数据直接导出到csv,因为获取阵列/查询响应,然后构建scv,然后再次将最终的csv上载到amazon需要时间。有没有一种方法可以让我直接用红移postgresql创建csv。 PgSQL-使用标题将选择查询数据直接导出到AmazonS3服务器 这是我的pgsql版本——amazon redshift上的pgsql 8.0.2版本 谢谢您可以使用语句将结果保存到S3存储桶中。请记住,这将创建多个文件(每个计算节点至少一个) 您必须下载所有文件,在本地合并它们,排序(如

我有这样的要求,我需要将报告数据直接导出到csv,因为获取阵列/查询响应,然后构建scv,然后再次将最终的csv上载到amazon需要时间。有没有一种方法可以让我直接用红移postgresql创建csv。 PgSQL-使用标题将选择查询数据直接导出到AmazonS3服务器 这是我的pgsql版本——amazon redshift上的pgsql 8.0.2版本

谢谢

您可以使用语句将结果保存到S3存储桶中。请记住,这将创建多个文件(每个计算节点至少一个)

您必须下载所有文件,在本地合并它们,排序(如果需要),然后添加列标题并将结果上传回S3

使用EC2实例不应该花费很多时间——EC2和S3之间的连接非常好

根据我的经验,最快的方法是使用Shell的命令:


这是我的第一种方法,但是我尝试使用php的cron作业花了8分钟多的时间来解析16mb的部分文件并转换为22mb的最终csv文件,这是不被接受的。我需要一些东西,可以使gb的报告csv在几分钟内,这是不可行的这种方法有任何东西,通过我可以直接导出到csv从postgresql或亚马逊技术
# run query on the redshift
export PGPASSWORD='__your__redshift__pass__'
psql \
    -h __your__redshift__host__ \
    -p __your__redshift__port__ \
    -U __your__redshift__user__ \
    __your__redshift__database__name__ \
    -c "UNLOAD __rest__of__query__"

# download all the results
s3cmd get s3://path_to_files_on_s3/bucket/files_prefix*

# merge all the files into one
cat files_prefix* > files_prefix_merged

# sort merged file by a given column (if needed)
sort -n -k2 files_prefix_merged > files_prefix_sorted

# add column names to destination file
echo -e "column 1 name\tcolumn 2 name\tcolumn 3 name" > files_prefix_finished

# add merged and sorted file into destination file
cat files_prefix_sorted >> files_prefix_finished

# upload destination file to s3
s3cmd put files_prefix_finished s3://path_to_files_on_s3/bucket/...

# cleanup
s3cmd del s3://path_to_files_on_s3/bucket/files_prefix*
rm files_prefix* files_prefix_merged files_prefix_sorted files_prefix_finished