Как удалить все базы данных, кроме нескольких, в 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 на странице проекта).