我已经被分配了一个模式,但我没有权限删除它。有没有一种简单的方法来删除模式中的每个表、数据和所有内容,使其就像我刚创建时一样。
drop schema jason cascade;
create schema jason;
但是不实际删除模式。
我已经被分配了一个模式,但我没有权限删除它。有没有一种简单的方法来删除模式中的每个表、数据和所有内容,使其就像我刚创建时一样。
drop schema jason cascade;
create schema jason;
但是不实际删除模式。
接受的答案很好,但您可以利用匿名块(PosgreSQL 9.0+)一步完成此操作:
DO $$
DECLARE
r record;
BEGIN
FOR r IN SELECT quote_ident(tablename) AS tablename, quote_ident(schemaname) AS schemaname FROM pg_tables WHERE schemaname = 'public'
LOOP
RAISE INFO 'Dropping table %.%', r.schemaname, r.tablename;
EXECUTE format('DROP TABLE IF EXISTS %I.%I CASCADE', r.schemaname, r.tablename);
END LOOP;
END$$;
请在psql中尝试以下操作:
-- Turn off headers:
\t
-- Use SQL to build SQL:
select 'drop table if exists "' || tablename || '" cascade;'
from pg_tables
where schemaname = 'jason';
-- If the output looks good, write it to a file and run it:
\g out.tmp
\i out.tmp
来源于stackoverflow.com/questions/3327312/drop-all-tables-in-postgresql
以下是需要翻译的内容: