Как удалить все базы данных, кроме нескольких, в postgres

Я хочу удалить все базы данных, кроме нескольких. Допустим, есть 20 баз данных, и я хочу удалить 18 из них, но сохраняю 2, поскольку он является последним и используется.

Просьба предложить.

Ответ 1

Сначала выполните следующий запрос в терминале psql.

select 'drop database "'||datname||'";'
from pg_database
where datistemplate=false;

Это приведет к генерации команды drop database для всех баз данных. Скопируйте результат в текстовый редактор и исключите (удалить) то, что вы хотите сохранить, и сохраните его как dd.sql. И выполните его следующим образом:

psql -d postgres -f dd.sql

Ответ 2

В качестве принятого ответа kinda демонстрирует его, удаление нескольких баз данных было особенно утомительным для меня, поэтому я написал вспомогательный script, чтобы облегчить эту операцию: https://github.com/Kraymer/ezdropdb

Вкратце, вы вводите шаблон, который должны быть подавлены для баз данных, которые должны быть подавлены, и все результаты db-имен перечислены, и есть окончательное приглашение, в котором вы можете указать, какие из них нужно удалить (скриншот cf на странице проекта).