需要在postgresql中添加到srting选择查询结果

时间:2016-12-27 11:11:45

标签: sql postgresql

我的数据库中有一堆表。我需要截断所有表而不是一些表。

所以通过使用table_schema我可以得到表名列表!

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

预期产出。

truncate table table_name restart identity.

有人告诉我有没有更好的方法来做到这一点。

2 个答案:

答案 0 :(得分:3)

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'

答案 1 :(得分:0)

您可以使用concat

在Postgres中||个字符串
select 'truncate table' || table_name::text || ' restart identity'
from information_schema.tables 
where table_schema = 'public 

查看9.4. String Functions and Operators