我使用postgresql,需要删除架构中存在的所有表。如何从命令提示符中删除。
我使用postgresql,需要删除架构中存在的所有表。如何从命令提示符中删除。
Answers:
您要使用的CASCADE
选项DROP SCHEMA
。从文档中:
CASCADE
-自动删除架构中包含的对象(表,函数等),然后删除所有依赖于这些对象的对象
要小心-强调我的重点。
显然,您之后需要重新创建架构。
要仅删除当前模式中的所有表,可以使用以下脚本:
DO $$ DECLARE
tabname RECORD;
BEGIN
FOR tabname IN (SELECT tablename
FROM pg_tables
WHERE schemaname = current_schema())
LOOP
EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(tabname.tablename) || ' CASCADE';
END LOOP;
END $$;
WHERE schemaname = current_schema()
如果要将所有表放在不同的架构中,请进行更改。
LINE 2
?第1行是什么?
如果您只是想要一种非常简单的方法来执行此操作。.这是我过去使用的脚本
select 'drop table '||table_name||' cascade constraints;' from user_tables;
这将为模式中的所有表打印一系列放置命令。假脱机查询结果并执行。
同样,如果您想清除多个表格,则可以编辑以下内容以适合您的需求
select 'drop '||object_type||' '|| object_name || ';' from user_objects where object_type in ('VIEW','PACKAGE','SEQUENCE', 'PROCEDURE', 'FUNCTION', 'INDEX')
资料来源:https : //forums.oracle.com/forums/thread.jspa?threadID=614090