加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – 截断Postgres数据库中的所有表

发布时间:2020-12-13 16:54:04 所属栏目:百科 来源:网络整理
导读:我经常需要在重建之前从我的PostgreSQL数据库中删除所有数据。我将如何直接在SQL中这样做? 目前,我设法提出一个SQL语句,返回所有我需要执行的命令: SELECT 'TRUNCATE TABLE ' || tablename || ';' FROM pg_tables WHERE tableowner='MYUSER'; 但我不能看
我经常需要在重建之前从我的PostgreSQL数据库中删除所有数据。我将如何直接在SQL中这样做?

目前,我设法提出一个SQL语句,返回所有我需要执行的命令:

SELECT 'TRUNCATE TABLE ' ||  tablename || ';' FROM pg_tables WHERE tableowner='MYUSER';

但我不能看到一种方式来执行他们的程序化一旦我有他们。

FrustratedWithFormsDesigner是正确的,PL / pgSQL可以做到这一点。这里是脚本:
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;

这创建了一个存储的函数(你需要这样做只是一次),你可以使用后,像这样:

SELECT truncate_tables('MYUSER');

HTH!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读