Tabellen nach Prefix auf einmal löschen

hi

bin noch neu mit PostgreSQL aber DBmail und Glassfish rennen damit richtig klasse :slight_smile:

Ich habe aus versehen ein Skript in einer falschen Datenbank angelegt. Dabei wurde mehrere Tabellen mit der Tabellenprefix phpr_ angelegt. Einzeln löschen würde gehen, aber ist irgendwie umständlich.
Kann ich alle Tabellen mit einer Tabellenprefix auch auf einmal löschen?

Jain. Nicht von Haus aus.

Du könntest dir eine kleine Funktion schreiben, die das macht.

Du könntest auch einfach die entspechenden Tabellen auflisten und in einem Editor mittels Makrofunktion das entsprechende “DROP TABLE” und “;” hinzufügen und das ganze dann mittels \i in psql einlesen.

Man könnte auch ein SQL-Einzeiler verwenden, der alle Tabellen nennt und ein drop table davor setzt, diesen psql vorwerfen und die Ausgabe wieder nach psql werfen, in etwa so:

psql test -t -c "select 'drop table ' || quote_ident(table_name) || ';' from information_schema.tables where table_schema = 'public' and table_name ~ '^a' and table_type='BASE TABLE';" | psql test

Löscht in der DB test im Schema Public alle Tabellen, die mit a anfangen…


Andreas