Redshift卸载查询中的传递日期参数

时间:2019-12-26 20:32:12

标签: amazon-web-services amazon-redshift

我正在通过存储过程使用UNLOAD语句从Redshift中提取数据。这是我的代码:

存储过程:

CREATE OR REPLACE PROCEDURE extract_failure_detail_sp(SQLStatement text, s3_path text, iamrole text)
    LANGUAGE plpgsql AS
    $$
    DECLARE
       delimiter varchar(5);
       unload_query varchar(1000);
    BEGIN
       delimiter:='|';
       unload_query := 'unload ('''||SQLStatement||''') to '''||s3_path||'_'' iam_role '''||iamrole||''' delimiter '''||delimiter||''' ALLOWOVERWRITE HEADER PARALLEL OFF';
       execute unload_query;
    END
    $$; 

这是我的称呼方式:

call extract_failure_detail_sp('select processsourceeventcreatedatepst, me_date, id1_value, id2_value, id3_value, id4_value from failure_detail where processsourceeventcreatedatepst = \'2019-12-18\' and system_id = 8 and failure_type_id = 4',
               's3://test-bucket/failures/2019-12-18/test_data', 'arn:aws:iam::82827373712:role/test-role');

我面临的问题是sql查询中的date参数。我如何在这里将其作为日期传递?它只会运行查询,而不会提取任何数据。

1 个答案:

答案 0 :(得分:0)

我想您的问题与日期周围的引号有关。

来自UNLOAD - Amazon Redshift

  

如果您的查询包含引号(例如,将文字值括起来),则将文字放在两组单引号之间-您还必须将查询括在单引号之间:

     

('select * from venue where venuestate=''NV''')