2016-07-27 2 views
2

С pgAdmin III я могу перечислить все базы данных на моем сервере postgresql.Как удалить базы данных postgresql, соответствующие шаблону?

Но с pgAdmin я могу удалить только одну базу данных в то время. Требуется много времени, чтобы удалить, например, 30 баз данных, один за другим ...

Итак, каким будет ваш подход к удалению, например, всех баз данных с именем, содержащим слово «june», ?

Возможно, мне придется построить сценарий Bash. Нет проблем с этим. Но какую команду вы бы использовали в этом скрипте?

У меня есть поиск в Интернете в течение многих часов без успеха для этой проблемы ...

Благодаря помощи.

ответ

2
psql -c "copy (select datname from pg_database where datname like '%june%') to stdout" | while read line; do 
    echo "$line" 
    #dropdb -i "$line" 
done 

Для psql и dropdb утилиты вы, вероятно, необходимо предоставить варианты подключения (see documentation)

+0

Кажется очень интересным. Я попробую это скоро. Спасибо за Ваш ответ. –

+0

1000 спасибо вам господин! Большой! Великий! Великий! –

1

Большое спасибо Abelisto.

Действительно рад его сценарию!

Вот наш последний сценарий, который хорошо работает. Абсолютно здорово! После многих месяцев поиска.

#!/bin/bash 
clear 
export PGPASSWORD="ssadas" 

PATTERN=$1 

echo "Le paramètre passé est : $PATTERN" 

/usr/bin/psql -U odoo -d postgres -c "copy (select datname from pg_database where datname like '%$PATTERN%') to stdout" | while read line; do 
    echo "$line" 
    dropdb -U odoo "$line" 
done 
echo 
echo "Les bases de données ayant $PATTERN dans leur nom on été effacées!" 
echo 
exit 
Смежные вопросы