我的数据库里有一堆表。我需要截短所有的表,但不能截短一些。
所以通过使用表模式,我可以得到表名列表!
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/