使用 PL/SQL 循环变量将卸载红移到 S3



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

  • 依赖于变量的卸载查询
  • 定义依赖于变量的 S3 路径

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

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命令。

请参阅:支持的 PL/pgSQL 语句 - Amazon Redshift

最新更新