2017-08-15 68 views
0
UNLOAD ('SELECT * FROM cn.test') TO 's3://bucket/archive/stage/test-#{format(@scheduledStartTime,'YYYY-MM-dd-HH')}.csv' credentials 'aws_access_key_id=###;aws_secret_access_key=###' DELIMITER '|' ADDQUOTES PARALLEL OFF ALLOWOVERWRITE 

我试过上面的命令来卸载到S3。获取错误:Amazon无效操作:在“YYYY”处或附近出现语法错误; 1声明失败。想要将红移表数据卸载到S3,并附上文件名的附加日期

如果我给出近乎日期的转义字符,那么文件名就像test-#{format(@scheduledStartTime,'YYYY-MM-dd-HH')}.csv而不是实际的sysdate

任何人都可以帮我

回答

1

一个已知的问题。我有类似的要求。作为一个解决方案,我用unload语句编写了一个shell脚本,当它成功执行时,我解雇了一个mv命令来重命名s3存储桶中的文件。

脚本:

psql -U$user -h hostname -p port -c "unload (...) to 's3://bucket-name' credentials 'aws_access_key_id; aws_secret_access_key' [switch1][switch2]..." 

    if [ "$?" != "0" ] 
     then 
       echo "\nS3 Error: Error in unloading CSV to S3" 
       echo "\nS3 Error: Error in unloading CSV to S3" >> $log_file 

     else aws s3 mv s3://bucket-name/"$file_name".csv000 s3://bucket-name/"$file_name$from_date".csv 
       echo "$file_name$from_date successfully copied to s3" >> $status_file 
       return 0 
     fi 
+0

感谢优素福的帮助。我会尝试这一个。 – New

相关问题