我正在尝试自动将文件从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;
答案 0 :(得分:0)
Redshift copy命令需要文件夹或文件的精确s3路径(s3:// abc / def或s3://abc/def/ijk.csv)
您需要为文件提供正确的路径。
您可以编写简单的java / php或shell脚本(postgres驱动程序)使用日期动态构建查询创建s3路径然后触发。这样您就可以用实际日期值替换它。
因此会出现语法错误。