9人参与 • 2026-03-18 • MsSqlserver
postgresql 中“清空一个数据库”通常有几种理解和对应方法,具体取决于你的需求:
truncate。drop schema + create schema。注意事项(非常重要):
truncate 或 drop 可能需要加 cascade。truncate 比 delete 快得多,且立即释放空间。
truncate table table1, table2, table3 restart identity cascade;
restart identity:同时重置自增序列(序列从 1 开始)。cascade:自动清空有外键引用的表(小心使用)。在 psql 中执行以下脚本:
do $$
declare
r record;
begin
for r in (select tablename from pg_tables where schemaname = current_schema()) loop
execute 'truncate table ' || quote_ident(r.tablename) || ' restart identity cascade;';
end loop;
end $$;
或者生成 sql 后执行(更灵活):
select 'truncate table ' || tablename || ' restart identity cascade;' from pg_tables where schemaname = 'public';
复制输出结果并执行即可。
最简单高效的方式是删除并重建默认 schema(public):
drop schema public cascade; create schema public; -- 恢复默认权限(推荐加上) grant all on schema public to postgres; grant all on schema public to public;
这会删除所有表、视图、函数、序列等,数据库本身还在,但已经是空的。
drop database if exists your_database_name; create database your_database_name;
# 删除数据库 dropdb -u postgres your_database_name # 创建新数据库 createdb -u postgres your_database_name
或者用 pgadmin 图形界面操作更直观。
truncate 时加 restart identity,或单独执行 alter sequence seq_name restart with 1;。vacuum full;
(会锁表,生产环境慎用;平时用 vacuum 即可)。
truncate ... continue identity;(默认行为)。truncate 仍然是最快的清空方式。到此这篇关于postgresql清空数据库的常用方法的文章就介绍到这了,更多相关postgresql清空数据库内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论