我正在寻找解决方案。我试图截断postgres数据库中的所有表:
我使用的是一个简单的SQL脚本
SELECT 'TRUNCATE ' || table_name || ';'
FROM information_schema.tables WHERE table_schema='sda' AND table_type='BASE TABLE';
不幸的是,它不起作用,因为许多关系不存在。
请帮忙。 (我正在使用postgresql 9.2)
答案 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;
同样 - 名字空格的大写通常会导致人为错误,更好地使用标准无案例名称......