#database #postgresql
#База данных #postgresql
Вопрос:
Я хочу удалить все базы данных, кроме нескольких. Допустим, есть 20 баз данных, и я хочу удалить 18 из них, но сохранить 2, поскольку они являются последними и используются.
Пожалуйста, предложите.
Комментарии:
1. «удалите database имя_базы данных» для ваших удаляемых 18 баз данных..
2. Спасибо за быстрый ответ! Мне нужен один скрипт, в котором я хотел бы упомянуть только имена двух баз данных, которые я хочу сохранить.
3. @пользователь3800715 … и когда вы попытались написать этот скрипт самостоятельно, используя выбранный вами язык сценариев, где вы застряли?
4. @CraigRinger Я не уверен, как написать скрипт для этого запроса. Может кто-нибудь предоставить скрипт для того же, совместимый с postgres?
Ответ №1:
Сначала выполните следующий запрос в терминале psql.
select 'drop database "'||datname||'";'
from pg_database
where datistemplate=false;
Это сгенерирует drop database
команду для всех баз данных. Скопируйте результат в текстовый редактор и исключите (удалите) то, что вы хотите сохранить, и сохраните это как dd.sql
файл. И выполнить это следующим образом:
psql -d postgres -f dd.sql
Комментарии:
1. необязательно:
psql -d postgres < <( psql -Atc "select 'drop database "'||datname||'";' from pg_database where datistemplate=false /* AND add_extra_conditions_here */;")
Ответ №2:
В pgAdmin теперь вы можете выбрать свойства базы данных, выбрать базы данных для удаления и нажать удалить / drop. Быстро и просто! Удалить выбранные базы данных:
Ответ №3:
Как показывает принятый ответ, удаление нескольких баз данных было для меня особенно утомительным, поэтому я написал вспомогательный скрипт, чтобы облегчить эту операцию:https://github.com/Kraymer/ezdropdb
Короче говоря, вы вводите шаблон, которому должны соответствовать базы данных, которые вы хотите подавить, затем отображаются результаты по всем именам БД, и появляется последнее приглашение, где вы можете ввести, какие из них следует удалить (см. скриншот на странице проекта) .