我正在通过存储过程使用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参数。我如何在这里将其作为日期传递?它只会运行查询,而不会提取任何数据。
答案 0 :(得分:0)
我想您的问题与日期周围的引号有关。
如果您的查询包含引号(例如,将文字值括起来),则将文字放在两组单引号之间-您还必须将查询括在单引号之间:
('select * from venue where venuestate=''NV''')