当前位置: 首页 > 面试题库 >

截断Postgres数据库中的所有表

丌官绍元
2023-03-14
问题内容

重建之前,我通常需要从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');


 类似资料:
  • 问题内容: 我需要清除所有库存表。 我已经试过了: 但是我得到这个错误: 如果这是正确的方法,那我做错了什么? 问题答案: 使用concat: 当然,这只会生成您需要复制和运行自己的SQL。

  • 我有一个用户测试。我想授予此用户在所有数据库上的所有权限。怎样才能做到呢?

  • 如前所述,我正在MySQL中进行并练习一个分区数据。由于我想清除所有的数据,数据仍然在那里,不能删除一次。 这是我创建的分区表。 我很好奇我的MySQL软件有问题吗?还是分区表导致了这种情况?因为我有一个没有分区的备份表,所以可以很好地使用Truncate,Delete和Select脚本。

  • 我有一个代表. csv文件结构的自定义类,它稍后会读入该类的arrayList。它有以下标签: 这是简化的. csv文件: 当我将这些读入arrayList并将各个状态放在consolse上只是为了检查时,它会正确显示(IN_STOCK,OUT_OF_STOCK)。但是,当我尝试将其插入数据库时,它会被截断: java.sql.SQLException:第1行的列“Status”的数据被截断 以下

  • 我用下面的代码创建了一个JFreeChart,但是y轴标记被截断了。即使数据点在y轴上重叠,我应该如何显示图表?基本上,我希望Y轴点从我的文件生成,一个适当的范围是填充和显示在图表中。 下面是创建的图像,很明显你可以看到Y轴有一个重叠显示。

  • django版本3.0.5 mongo版本4.4.6 settings.py 当我在mongod.conf中启用授权时 并尝试迁移,我得到以下错误 pymongo.errors.OperationFailure: command listCollections 需要身份验证, 完整错误: {'ok': 0.0, 'errmsg': 'command listCollections require