如何在PostgreSQL数据库中删除所有表?

47 浏览
0 Comments

如何在PostgreSQL数据库中删除所有表?

如何从命令行中删除PostgreSQL中的所有表格?

不想要删除数据库本身,只想要删除所有表格和其中的所有数据。

admin 更改状态以发布 2023年5月21日
0
0 Comments

您可以编写一个查询来生成类似以下 SQL 脚本的内容:\n

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

\n\n或者:\n\n

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

\n\n在某些表由于前面的 CASCADE 选项而自动删除的情况下。另外,正如评论中所述,您可能希望按模式名称过滤要删除的表:\n

select 'drop table if exists "' || tablename || '" cascade;' 
  from pg_tables
 where schemaname = 'public'; -- or any other schema

\n\n然后运行它。\n\nGlorious COPY+PASTE 也可以工作。

0
0 Comments

如果所有的表都在一个模式中,这种方法可能可行(以下代码假设您的模式名称为 public

DROP SCHEMA public CASCADE;
CREATE SCHEMA public;

如果您使用的是 PostgreSQL 9.3 或更高版本,则可能还需要恢复默认授权。

GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO public;

0