从S3动态将日期插入到Redshift Copy命令的文件名中

时间:2014-11-20 18:01:42

标签: amazon-redshift

我正在尝试自动将文件从S3复制到Redshift。站在我的路上是我无知如何使日期(下面的粗体)始终是今天的约会。

COPY cid_localytics_export
FROM 's3://exports.localytics.t-z/<redacted>/**2014/11/19**/eb0ecf515724b3ef5a6d8cb-a8a0fa68-3551-11e4-4b45-00a426b17dd8/00.log.gz'
CREDENTIALS 'aws_access_key_id=<redacted>;aws_secret_access_key=<redacted>' 
JSON 's3://exports.localytics.t-z/<redacted>/redshift_example.json'
GZIP
TRUNCATECOLUMNS;

当我尝试以下操作时,出现语法错误。任何想法或建议将不胜感激。

COPY cid_localytics_export_test
FROM (select ''''||'s3://exports.localytics.t-z/<redacted>/'||(select ltrim(rtrim(replace(replace(cast(date_trunc('day', now()) - interval '1 day' as varchar),'-','/'),' 00:00:00+00',''))))||'/eb0ecf515724b3ef5a6d8cb-a8a0fa68-3551-11e4-4b45-00a426b17dd8/00.log.gz'||'''')
CREDENTIALS 'aws_access_key_id=<redacted>;aws_secret_access_key=<redacted>' 
JSON 's3://exports.localytics.t-z/whitepages/redshift_example.json'
GZIP
TRUNCATECOLUMNS;

1 个答案:

答案 0 :(得分:0)

Redshift copy命令需要文件夹或文件的精确s3路径(s3:// abc / def或s3://abc/def/ijk.csv)

您需要为文件提供正确的路径。

您可以编写简单的java / php或shell脚本(postgres驱动程序)使用日期动态构建查询创建s3路径然后触发。这样您就可以用实际日期值替换它。

因此会出现语法错误。