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

Как да премахна всички таблици в psql (интерактивен терминал PostgreSQL), които започват с обща дума?

Този скрипт ще генерира DDL командите, за да ги премахне всичките:

SELECT 'DROP TABLE ' || t.oid::regclass || ';'
FROM   pg_class t
-- JOIN   pg_namespace n ON n.oid = t.relnamespace -- to select by schema
WHERE  t.relkind = 'r'
AND    t.relname ~~ E'doors\_%' -- enter search term for table here
-- AND n.nspname ~~ '%myschema%' -- optionally select by schema(s), too
ORDER  BY 1;

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

Относно пътя за търсене на схема.

Можете също така да автоматизирате изхвърлянето, но е неразумно не за да проверявате какво всъщност изтривате, преди да го направите.

Можете да добавите CASCADE към всеки израз към DROP зависими обекти (изгледи и препращащи външни ключове). Но, отново, това е неразумно освен ако не знаете много добре какво правите. Ограниченията на външния ключ не са голяма загуба, но това също ще премахне напълно всички зависими изгледи. Без CASCADE получавате съобщения за грешка, които ви информират кои обекти ви пречат да изпуснете таблицата. И след това можете да се справите с него.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Режимът H2 postgresql изглежда не работи за мен

  2. Как да добавите модул към Wildfly с помощта на CLI

  3. миграция от sqlite към postgresql в django

  4. ActiveRecord::AdapterNotSpecified конфигурацията на базата данни не посочва адаптер

  5. Django get_or_create не успява да зададе поле, когато се използва с iexact