Isso criará as instruções para descartar essas tabelas e não outros objetos que correspondem ao padrão. Também não há tabelas de sistema.
SELECT 'DROP TABLE ' || c.oid::regclass || ';'
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace -- to restrict to a schema
WHERE c.relkind = 'r' -- only tables
AND c.relname ILIKE '%gtab%' -- pattern for table names
AND n.nspname = 'public' -- restrict to a schema
ORDER BY 1;
A conversão para
regclass
escapa automaticamente e qualifica nomes de tabela conforme necessário e é seguro contra injeção de SQL. Detalhes:- Nome da tabela como Parâmetro de função do PostgreSQL
- Definir nomes de tabelas e colunas como argumentos em uma função plpgsql?
Para muitas tabelas, uma única instrução integrada será mais rápida:
SELECT 'DROP TABLE ' || string_agg(c.oid::regclass::text, ', ') || ';'
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind = 'r'
AND c.relname ILIKE '%gtab%'
AND n.nspname = 'public'
ORDER BY 1;
Resultado:
DROP TABLE tbl1, tbl2, schema1.tbl3;
Respostas relacionadas:
- Existe um comando postgres para listar/descartar todas as visualizações materializadas?
- Como excluir sequências não utilizadas? a>