Postgres 如何清空数据库下的所有表记录,但保留表结构?

简介: Postgres 如何清空数据库下的所有表记录,但保留表结构?

因为最近一次在部署环境的时候,需要把测试环境的数据迁移到本地进行调试,需要清空数据库中所有的数据但是保留表结构。


使用 postgres 数据库,在此记录一下


CREATE OR REPLACE FUNCTION truncate_tables(username IN VARCHAR) RETURNS void AS $$
DECLARE
    statements CURSOR FOR
        SELECT tablename FROM pg_tables
        WHERE tableowner = username AND schemaname = 'public';
BEGIN
    FOR stmt IN statements LOOP
        EXECUTE 'TRUNCATE TABLE ' || quote_ident(stmt.tablename) || ' CASCADE;';
    END LOOP;
END;
$$ LANGUAGE plpgsql;


上面的函数可以清空 schema 为 public 下的所有表记录同时保留表结构。

按照下面的方式调用即可


SELECT truncate_tables('MYUSER');


需要注意的是,如果你在表结构中使用了枚举值,上面的方法并不会清空枚举值,还是需要你手动清空一下。

目录
相关文章
|
2月前
|
自然语言处理 关系型数据库 数据库
|
27天前
|
SQL 存储 数据库
SQL 撤销索引、撤销表以及撤销数据库
SQL 撤销索引、撤销表以及撤销数据库
25 4
|
1月前
|
SQL 关系型数据库 MySQL
mysqldiff - Golang 针对 MySQL 数据库表结构的差异 SQL 工具
Golang 针对 MySQL 数据库表结构的差异 SQL 工具。https://github.com/camry/mysqldiff
59 7
|
1月前
|
SQL 存储 数据管理
数据管理DMS产品使用合集之如何把整个数据库的表和数据全部导出来
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
2月前
|
SQL 数据库 索引
数据库中表维护
【5月更文挑战第7天】本文介绍了提高数据库性能的五个技巧。1) 使用`ON DUPLICATE KEY UPDATE`或`ON CONFLICT DO UPDATE`避免锁竞争,尤其在高并发更新计数器场景下。2) 通过JOIN查询进行基于选择的更新。3) 使用公式表达式-CTE-删除重复行 。4) 定期运行`ANALYZE`命令更新表统计信息。这些方法有助于优化数据库性能,减少锁等待和提高查询速度。
54 1
数据库中表维护
|
21天前
|
SQL Apache 数据库
doris数据库的表重命名语法是什么
【6月更文挑战第24天】doris数据库的表重命名语法是什么
86 0
|
21天前
|
存储 数据库连接 数据库
逆向学习数据库篇:表设计和数据库操作的核心概念与流程
逆向学习数据库篇:表设计和数据库操作的核心概念与流程
15 0
|
26天前
|
SQL 数据可视化 关系型数据库
数据库大作业——基于qt开发的图书管理系统(二) 相关表结构的设计
数据库大作业——基于qt开发的图书管理系统(二) 相关表结构的设计
|
2月前
|
算法 关系型数据库 数据库
|
2月前
|
关系型数据库 数据库
关系型数据库表结构设计的主键的简单性
【5月更文挑战第16天】关系型数据库表结构设计的主键的简单性
30 2