Redshift UNLOAD 到 S3 使用 PL/SQL 循环变量

Redshift UNLOAD to S3 using PL/SQL loop variable

是否可以在存储过程循环中使用 Redshift UNLOAD 命令来:

我一直在试验一个人为的例子,但似乎无法让它工作..

CREATE OR REPLACE PROCEDURE p_shoes()
LANGUAGE plpgsql
AS $$
DECLARE
  shoe_record RECORD;
BEGIN
  FOR shoe_record IN EXECUTE 'SELECT * FROM shoes' LOOP
    UNLOAD('SELECT * FROM shoes JOIN shoetypes ON shoetypes.shoetype = ''' || shoe_record.shoetype || '''')
    TO 's3://some-bucket/prefix/' || shoe_record.shoetype;
  END LOOP;
  RETURN;
END;
$$;

您可以使用EXECUTE命令将运行任何字符串作为命令。

所以,你可以把UNLOAD命令变成一个字符串(varchar),修改感兴趣的值然后EXECUTE命令。

参见:Supported PL/pgSQL Statements - Amazon Redshift