我的数据库里有一堆表。我需要截短所有的表,但不能截短一些。
所以通过使用表模式,我可以得到表名列表!

select  ''as "truncate", table_name
from information_schema.tables
where  table_schema = 'public'

预期产出。
truncate table table_name restart identity.

有人告诉我还有更好的办法。

最佳答案

format()与架构和表名的占位符一起使用,以确保正确引用这些名称:
要正确处理表使用的外键,最好在cascade命令中添加truncate选项:

select format('truncate table %I.%I restart identity cascade;', table_schema, table_name) as stmt
from information_schema.tables
where table_schema = 'public';

另一种选择是在一条语句中截断所有表:
select concat('truncate table ', string_agg(format('%I.%I', table_schema, table_name), ', '), ' restart identity;') as stmt
from information_schema.tables
where table_schema = 'public'

关于sql - 需要在PostgreSQL中添加到字符串中选择查询结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41344084/

10-11 01:21