模式中截断脚本表不起作用

时间:2017-12-16 12:16:06

标签: sql postgresql truncate

我正在寻找解决方案。我试图截断postgres数据库中的所有表:

我使用的是一个简单的SQL脚本

SELECT 'TRUNCATE ' || table_name || ';'
FROM information_schema.tables WHERE table_schema='sda' AND table_type='BASE TABLE';

不幸的是,它不起作用,因为许多关系不存在。

请帮忙。 (我正在使用postgresql 9.2)

1 个答案:

答案 0 :(得分:0)

制备

t=# create schema sda;
CREATE SCHEMA
t=# create table sda."BASE TABLE"();
CREATE TABLE

尝试:

t=# SELECT format('TRUNCATE %I;',table_name)
    FROM information_schema.tables WHERE table_schema='sda' AND table_type = 'BASE TABLE';
         format
------------------------
 TRUNCATE "BASE TABLE";
(1 row)
t=# TRUNCATE "BASE TABLE";
TRUNCATE TABLE

所以我假设您没有将表格视为标识符,例如:

t=# TRUNCATE BASE TABLE;
ERROR:  syntax error at or near "TABLE"
LINE 1: TRUNCATE BASE TABLE;

同样 - 名字空格的大写通常会导致人为错误,更好地使用标准无案例名称......