PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Entfernen von COMMENT ON aus allen Objekten in PostgreSQL

Ich stand vor einiger Zeit vor einem sehr ähnlichen Problem und fand eine sehr einfache Lösung:Löschen Sie aus der Systemkatalogtabelle pg_description direkt . Kommentare werden einfach an Objekte "angehängt" und stören sonst nicht.

DELETE FROM pg_description WHERE description = 'something special';

Haftungsausschluss:
Katalogtabellen direkt zu manipulieren ist gefährlich und eine Maßnahme der letzten Instanz. Sie müssen wissen, was Sie tun und Sie tun es auf eigene Gefahr! Wenn Sie es vermasseln, können Sie Ihre Datenbank (Cluster) vermasseln.

Ich fragte nach der Idee auf der pgsql-admin-Liste und erhielt eine ermutigende Antwort von Tom Lane :

> DELETE FROM pg_description WHERE description = 'My very special
> totally useless comment.';

> AFAICS, there are no side-effects. Are there any?

It's safe enough, as long as you don't delete the wrong comments.
There's no hidden infrastructure for a comment.

            regards, tom lane

Sie sollten sicherstellen, dass es keine Kommentare gibt, die Sie lieber behalten möchten. Überprüfen Sie zuerst, was Sie löschen möchten. Beachten Sie, dass viele integrierte Postgres-Objekte auch Kommentare haben.

Zum Beispiel, um nur alle Kommentare zu Tabellenspalten zu löschen , könnten Sie verwenden:

SELECT *
-- DELETE
FROM   pg_description
WHERE  objsubid > 0;

Das Handbuch informiert über die Spalte objsubid :