我想删除以' u _' 开头的数据库中的所有架构,出于某种原因,每当我尝试创建和修改时,我都会创建200多个架构 pgSQL 中的表格。
我尝试使用
drop schema u_* cascade;
但我不认为通配符是这样工作的(这里会得到语法错误代码)。我知道我可以通过
获取所有模式名称select schema_name
from information_schema.schemata;
但是从那以后我就不知道该怎么做了。我只想删除所有空的模式或以" u _"开头。
答案 0 :(得分:0)
此语句将删除名称以u_
开头的所有模式及其内容:
DO $$DECLARE
s text;
BEGIN
FOR s IN
SELECT nspname FROM pg_namespace
WHERE nspname LIKE 'u\_%'
LOOP
EXECUTE 'DROP SCHEMA "' || quote_ident(s) || '" CASCADE';
END LOOP;
END;$$;
要删除所有空架构,请使用
DO $$DECLARE
s text;
BEGIN
FOR s IN
SELECT nspname FROM pg_namespace
WHERE nspname NOT LIKE 'pg_%' AND nspname <> 'public'
LOOP
BEGIN
EXECUTE 'DROP SCHEMA "' || quote_ident(s) || '"';
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END LOOP;
END;$$;
但如果我是你,我会弄清楚是什么创造了这些模式并阻止了它。 PostgreSQL本身没有这样的东西。