PostgreSQL

关注公众号 jb51net

关闭
首页 > 数据库 > PostgreSQL > PostgreSQL清空数据库

PostgreSQL清空数据库的常用方法

作者:亮子AI

PostgreSQL 中清空一个数据库通常有几种理解和对应方法,具体取决于你的需求,本文通过代码示例给大家介绍了常用的清空方法,需要的朋友可以参考下

PostgreSQL 中“清空一个数据库”通常有几种理解和对应方法,具体取决于你的需求:

注意事项(非常重要)

1. 最推荐:只清空数据(保留表结构)—— 使用 TRUNCATE

TRUNCATEDELETE 快得多,且立即释放空间。

方法 A:手动清空单个或多个表

TRUNCATE TABLE table1, table2, table3 RESTART IDENTITY CASCADE;

方法 B:自动清空当前 schema(通常是 public)中的所有表

在 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';

复制输出结果并执行即可。

2. 彻底清空数据库(删除所有对象,保留空库)

最简单高效的方式是删除并重建默认 schema(public):

DROP SCHEMA public CASCADE;
CREATE SCHEMA public;

-- 恢复默认权限(推荐加上)
GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO public;

这会删除所有表、视图、函数、序列等,数据库本身还在,但已经是空的。

3. 完全删除并重建整个数据库

使用 SQL(需要在 postgres 或其他数据库中执行,不能在目标数据库里删自己)

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 图形界面操作更直观。

4. 其他常见场景

VACUUM FULL;

(会锁表,生产环境慎用;平时用 VACUUM 即可)。

建议

到此这篇关于PostgreSQL清空数据库的常用方法的文章就介绍到这了,更多相关PostgreSQL清空数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文