我对Postgres很新,我想知道是否有办法将字符串作为查询运行(不是在PL / pgSQL中,我得到的不是你在psql提示符中可以做的事情)。具体来说,在诸如this one之类的问题中,您可以使用查询生成批处理脚本,如下所示:
select 'drop table if exists "' || tablename || '" cascade;' from pg_tables;
但是你怎么运行它?
答案 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。