Redshift卸载到S3连接字符串的位置

时间:2017-03-22 12:01:16

标签: amazon-s3 amazon-redshift

我正在尝试将结果从红移查询卸载到昨天日期的存储区文件夹。

所以在下面的例子中,数据应该在s3:// mybucket / reporting / 20170321 / myreport-000

unload ('select * from #my_report')
to 's3://mybucket/reporting/' || replace(trunc(current_date - 1),'-','') || '/myreport'
credentials 'aws_access_key_id=key;aws_secret_access_key=secretkey'
delimiter ','
gzip addquotes null as ''
PARALLEL off
allowoverwrite;

但是我收到了错误

[Amazon](500310) Invalid operation: syntax error at or near "||";

首先不评估字符串连接吗?

1 个答案:

答案 0 :(得分:0)

无法动态构建UNLOAD路径语句。

我可以建议两种方法:

  • 方法1:我建议你编写一个shell脚本/ Python / Javascript来创建变量,然后将这些变量传递给连接的语句查询。
  • 方法2:或者您可以使用AWS Data Pipeline中的RedshiftCopyActivity从Redshift复制到S3。输入为RedshiftDataNode,输出为S3DataNode,您可以在其中为directoryPath指定表达式。

    如果我做了一个错误的假设,请发表评论,我将重新调整我的答案。