2016-07-27 9 views
2

Mit pgAdmin III kann ich alle Datenbanken auf meinem postgresql-Server auflisten.Wie können Postgresql-Datenbanken gelöscht werden, die mit einem Muster übereinstimmen?

Aber mit pgAdmin kann ich nur 1 Datenbank zu der Zeit löschen. Es kostet viel Zeit, um zum Beispiel 30 Datenbanken einzeln zu löschen ...

Also, was wäre Ihr Ansatz, um zum Beispiel alle Datenbanken mit einem Namen zu löschen, der das Wort "june" enthält? ?

Wahrscheinlich werde ich ein Bash-Skript erstellen müssen. Kein Problem damit. Aber welchen Befehl würden Sie in diesem Skript verwenden?

Ich suche haben das Web für viele Stunden ohne Erfolg für dieses Problem ...

Dank zu helfen.

Antwort

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 

Für psql und dropdb Dienstprogramme, die Sie wahrscheinlich brauchen die Anschlussmöglichkeiten (see documentation)

+0

Scheint sehr interessant. Ich werde es bald versuchen. Danke für deine Antwort. –

+0

1000 danke dir Herr! Groß! groß! groß! –

1

Big dank Abelisto bereitzustellen.

Wirklich glücklich, sein Drehbuch zu haben!

Hier sind unsere letzten Skript, die gut funktioniert. Absolut perfekt! Nach vielen Monaten der Suche.

#!/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