sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan finder og sletter du nogle tabeller fra PostgreSQL-databasen

Dette vil oprette sætningerne for at droppe nævnte tabeller og ikke andre objekter, der matcher mønsteret. Heller ingen systemtabeller.

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;

Castet til regclass automatisk escapes og skema-kvalificerer tabelnavne efter behov og er sikker mod SQL-injektion. Detaljer:

For mange tabeller vil en enkelt integreret sætning være hurtigere:

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;

Resultat:

DROP TABLE tbl1, tbl2, schema1.tbl3;

Relaterede svar:



  1. MySQL:Indsæt i flere tabeller i samme forespørgsel med BEGIN&COMMIT

  2. Hvordan får man adgang til data fra tabel ved hjælp af php mysql?

  3. Linjenummer i sql-server som LINE i USER_SOURCE oracle

  4. Oracle valgfrit forhold