sql >> Database >  >> RDS >> PostgreSQL

Enkele tabellen uit de PostgreSQL-database vinden en verwijderen?

Dit zal de instructies creëren om genoemde tabellen te laten vallen en niet andere objecten die overeenkomen met het patroon. Ook geen systeemtabellen.

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;

De cast naar regclass ontsnapt automatisch en kwalificeert tabelnamen als nodig en is veilig tegen SQL-injectie. Details:

Voor veel tabellen is één geïntegreerd statement sneller:

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;

Resultaat:

DROP TABLE tbl1, tbl2, schema1.tbl3;

Gerelateerde antwoorden:



  1. Hibernate eqOrIsNull() gebruiken

  2. 2 manieren om een ​​tabel op een gekoppelde server te maken met T-SQL

  3. Alle databases weergeven met PostgreSQL

  4. PostgreSQL dump Temp-tabel