Redshift 中的存储过程使用卸载的字符串替换

Posted

技术标签:

【中文标题】Redshift 中的存储过程使用卸载的字符串替换【英文标题】:Stored procedure in Redshift to use string replacement with unload 【发布时间】:2021-10-15 15:29:10 【问题描述】:

我想在以下几行中实现一些目标:

create or replace procedure my_sp_name(p_date date) as
$$
begin
    unload ('
    select *
    from my_table
    where my_date = ''DATE_GOES_HERE''
    ')
        to 's3://my-bucket/some_key/DATE_GOES_HERE/some_file'
        iam_role 'my_iam_role'
        allowoverwrite csv parallel off;
end ;
$$
    language plpgsql;

我一直在尝试不同的事情,但是,似乎无法找到在卸载的两个部分中进行字符串替换的正确方法。这样做的正确方法是什么?

【问题讨论】:

【参考方案1】:

您需要在程序中执行“SQL 语句”。请参阅:“动态 SQL”部分下的 https://docs.aws.amazon.com/redshift/latest/dg/c_PLpgSQL-statements.html

【讨论】:

以上是关于Redshift 中的存储过程使用卸载的字符串替换的主要内容,如果未能解决你的问题,请参考以下文章

递归地将数据从 redshift 卸载到 S3 存储桶

Redshift 中的列主要卸载

数据字符串中具有分隔符/特殊字符的 Redshift 卸载命令

Redshift 卸载到 S3 位置,它是一个连接字符串

如何在 Redshift 中的 select 语句中使用存储过程

没有函数或存储过程的 Amazon RedShift 中的 Upsert