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


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

目录
相关文章
|
1月前
|
存储 数据库
工作流Flowable 数据库表结构说明、Flowable 数据字典说明
工作流Flowable 数据库表结构说明、Flowable 数据字典说明
67 0
|
1月前
|
存储 关系型数据库 数据库
什么是数据库表结构
什么是数据库表结构
|
3月前
|
数据库 数据安全/隐私保护 Python
写一个定时备份数据库的脚本,且只保留最近3天
写一个定时备份数据库的脚本,且只保留最近3天
67 3
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
99 1
|
2月前
|
存储 关系型数据库 MySQL
MySQL技能完整学习列表5、数据库操作——1、创建数据库和表——2、修改表结构(ALTER TABLE)
MySQL技能完整学习列表5、数据库操作——1、创建数据库和表——2、修改表结构(ALTER TABLE)
183 0
|
3月前
|
SQL 关系型数据库 MySQL
MySQL | 数据库的管理和操作【表的增删改查】(一)
MySQL | 数据库的管理和操作【表的增删改查】
|
3月前
|
SQL 关系型数据库 MySQL
MySQL | 数据库的管理和操作【表的增删改查】(二)
MySQL | 数据库的管理和操作【表的增删改查】(二)
|
3月前
|
SQL 数据库
数据库修改表
数据库修改表
32 0
|
1月前
|
Oracle 关系型数据库 MySQL
一款好用的数据库表结构文档生成工具
一款好用的数据库表结构文档生成工具
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL】——用SQL语句实现数据库和基本表的创建
【MySQL】——用SQL语句实现数据库和基本表的创建
62 3
【MySQL】——用SQL语句实现数据库和基本表的创建