PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak znaleźć i usunąć niektóre tabele z bazy danych PostgreSQL

Spowoduje to utworzenie instrukcji usuwających wspomniane tabele, a nie inne przedmioty pasujące do wzoru. Również nie ma tabel systemowych.

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;

Rzut na regclass w razie potrzeby automatycznie wyprowadza i kwalifikuje nazwy tabel według schematu i jest bezpieczny przed wstrzyknięciem SQL. Szczegóły:

W przypadku wielu tabel pojedyncza zintegrowana instrukcja będzie szybsza:

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;

Wynik:

DROP TABLE tbl1, tbl2, schema1.tbl3;

Powiązane odpowiedzi:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyzwalacz aktualizacji PostgreSQL

  2. Generowanie hasła użytkownika postgresql

  3. jak wykonać skrypt pgsql w pgAdmin?

  4. zaktualizuj zapytanie z połączeniem na dwóch stołach

  5. Jak działa funkcja to_number() w PostgreSQL