如何创建Redshift存储过程批量执行生成的SQL语句?
在Redshift中批量执行生成的Drop Table语句的存储过程
直接给你可以用的Redshift存储过程,它会自动遍历你生成的所有DROP TABLE语句并执行:
CREATE OR REPLACE PROCEDURE drop_tables_in_schemas() LANGUAGE plpgsql AS $$ DECLARE drop_stmt TEXT; cur CURSOR FOR SELECT 'drop table if exists '||schemaname||'.'|| tablename || ' cascade;' FROM pg_tables WHERE schemaname IN ('schema_1','schema_2'); -- 修正了原SQL里重复的schema_2,需要保留重复可自行修改 BEGIN OPEN cur; LOOP FETCH cur INTO drop_stmt; EXIT WHEN NOT FOUND; EXECUTE drop_stmt; RAISE NOTICE 'Executed: %', drop_stmt; -- 可选,打印执行语句方便排查 END LOOP; CLOSE cur; END; $$;
使用步骤:
- 执行上述代码创建存储过程
- 调用存储过程执行所有DROP语句:
CALL drop_tables_in_schemas();
注意事项:
- 执行存储过程的用户必须拥有对应schema下所有表的DROP权限,以及访问
pg_tables系统表的权限 CASCADE会删除依赖这些表的对象(如视图、关联外键的对象等),执行前务必确认业务影响
内容的提问来源于stack exchange,提问作者abhinavkm
相关产品推荐
相关产品推荐

