PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да намерите и изтриете някои таблици от базата данни на PostgreSQL

Това ще създаде операторите за премахване на споменатите таблици и не други обекти, съответстващи на модела. Също така няма системни таблици.

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;

Прехвърлянето към regclass автоматично избягва и схематично квалифицира имената на таблиците според нуждите и е безопасен срещу SQL инжектиране. Подробности:

За много таблици един интегриран израз ще бъде по-бърз:

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;

Резултат:

DROP TABLE tbl1, tbl2, schema1.tbl3;

Свързани отговори:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не може да се свърже със сървъра на PostgreSQL:не може да се свърже със сървъра:Разрешението е отказано

  2. Как Log() работи в PostgreSQL

  3. Как да вмъкнете данни в таблица с помощта на съхранени процедури в postgresql

  4. ResetDjango postgresql база данни? промиването не работи

  5. Опростете вложен случай, когато израз