是否可以在存储过程循环中使用 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