执行SQL Query生成的脚本

时间:2017-11-12 23:22:59

标签: sql postgresql

我对Postgres很新,我想知道是否有办法将字符串作为查询运行(不是在PL / pgSQL中,我得到的不是你在psql提示符中可以做的事情)。具体来说,在诸如this one之类的问题中,您可以使用查询生成批处理脚本,如下所示:

select 'drop table if exists "' || tablename || '" cascade;' from pg_tables;

但是你怎么运行它?

1 个答案:

答案 0 :(得分:2)

为什么不使用plpgsql?您可以使用anonymous blocks

执行此操作
DO $$
DECLARE 
    r record;
BEGIN
    FOR r IN SELECT schemaname, tablename FROM pg_tables WHERE schemaname = 'my_schema'
    LOOP
        RAISE INFO 'Dropping table: %.%', r.schemaname, r.tablename;
        EXECUTE format('DROP TABLE %I.%I', r.schemaname, r.tablename);
    END LOOP;
END$$;

是的,它适用于psql。