PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Rimozione di COMMENT ON da tutti gli oggetti in PostgreSQL

Ho affrontato un problema molto simile qualche tempo fa e ho trovato una soluzione molto semplice:eliminare dalla tabella del catalogo di sistema pg_description direttamente . I commenti sono semplicemente "attaccati" agli oggetti e non interferiscono in altro modo.

DELETE FROM pg_description WHERE description = 'something special';

Dichiarazione di non responsabilità:
La manipolazione diretta delle tabelle di catalogo è pericolosa e una misura di ultima istanza. Devi sapere cosa stai facendo e lo stai facendo a tuo rischio! Se sbagli, potresti rovinare il tuo database (cluster).

Ho chiesto dell'idea nell'elenco di pgsql-admin e ho ricevuto un risposta incoraggiante di 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

Dovresti assicurarti che non ci siano commenti che vorresti conservare. Controlla prima cosa cancellerai. Tieni presente che anche molti oggetti Postgres integrati hanno commenti.

Ad esempio, per eliminare solo tutti i commenti sulle colonne della tabella , potresti usare:

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

Il manuale informa sulla colonna objsubid :