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

前端之家收集整理的这篇文章主要介绍了postgresql – 截断Postgres数据库中的所有表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我经常需要在重建之前从我的Postgresql数据库删除所有数据。我将如何直接在sql中这样做?

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

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

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

FrustratedWithFormsDesigner是正确的,PL / pgsql可以做到这一点。这里是脚本:
  1. CREATE OR REPLACE FUNCTION truncate_tables(username IN VARCHAR) RETURNS void AS $$
  2. DECLARE
  3. statements CURSOR FOR
  4. SELECT tablename FROM pg_tables
  5. WHERE tableowner = username AND schemaname = 'public';
  6. BEGIN
  7. FOR stmt IN statements LOOP
  8. EXECUTE 'TRUNCATE TABLE ' || quote_ident(stmt.tablename) || ' CASCADE;';
  9. END LOOP;
  10. END;
  11. $$ LANGUAGE plpgsql;

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

  1. SELECT truncate_tables('MYUSER');

HTH!

猜你在找的Postgre SQL相关文章