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

postgresql – 截断Postgres数据库中的所有表,第1张

概述我经常需要在重建之前从我的PostgreSQL数据库中删除所有数据。我将如何直接在SQL中这样做? 目前,我设法提出一个SQL语句,返回所有我需要执行的命令: SELECT 'TRUNCATE TABLE ' || tablename || ';' FROM pg_tables WHERE tableowner='MYUSER'; 但我不能看到一种方式来执行他们的程序化一旦我有他们。 Frust 我经常需要在重建之前从我的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!

总结

以上是内存溢出为你收集整理的postgresql – 截断Postgres数据库中的所有表全部内容,希望文章能够帮你解决postgresql – 截断Postgres数据库中的所有表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1172940.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存