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

问题描述 投票:1回答:1

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

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

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

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

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

sql postgresql truncate
1个回答
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;

另外 - 名字空间大写经常会导致人为错误,更好地使用标准无案例名称......

© www.soinside.com 2019 - 2024. All rights reserved.