sql >> Databáze >  >> RDS >> PostgreSQL

Jak najít a odstranit některé tabulky z databáze PostgreSQL

Tím se vytvoří příkazy, které uvedené tabulky zruší a ne další objekty odpovídající vzoru. Také žádné systémové tabulky.

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;

Odeslání do regclass automaticky escapuje a kvalifikuje názvy tabulek podle potřeby a je bezpečný proti SQL injection. Podrobnosti:

Pro mnoho tabulek bude jeden integrovaný příkaz rychlejší:

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;

Výsledek:

DROP TABLE tbl1, tbl2, schema1.tbl3;

Související odpovědi:



  1. Pokud je podmíněno v SQL Script pro Mysql

  2. Složité dynamické řazení fotbalové ligy v MySQL?

  3. vyberte COUNT se třemi tabulkami - mysql

  4. Před vytvořením dočasné tabulky zkontrolujte, zda existuje dočasná tabulka, a odstraňte, pokud existuje