sql >> Database >  >> RDS >> PostgreSQL

COMMENT ON verwijderen van alle objecten in PostgreSQL

Ik heb enige tijd geleden een vergelijkbaar probleem gehad en kwam met een zeer eenvoudige oplossing:verwijder uit de systeemcatalogustabel pg_description rechtstreeks . Opmerkingen worden gewoon aan objecten "gehecht" en storen zich verder niet.

DELETE FROM pg_description WHERE description = 'something special';

Disclaimer:
Het rechtstreeks manipuleren van catalogustabellen is gevaarlijk en een laatste redmiddel. Je moet weten wat je doet en je doet het op eigen risico! Als je het verknoeit, kan je je database (cluster) verknoeien.

Ik vroeg naar het idee op de pgsql-admin-lijst en kreeg een bemoedigend antwoord van 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

U moet ervoor zorgen dat er geen opmerkingen zijn die u liever bewaart. Controleer eerst wat u gaat verwijderen. Houd er rekening mee dat veel ingebouwde Postgres-objecten ook opmerkingen hebben.

Om bijvoorbeeld alleen alle opmerkingen over tabelkolommen te verwijderen , je zou kunnen gebruiken:

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

De handleiding geeft informatie over de kolom objsubid :



  1. psql:server heeft de verbinding onverwacht gesloten

  2. Gegevens lezen van SqlDataReader

  3. Bulkinsert naar MS SQL Server versnellen met pyodbc

  4. Als een tabel bestaat, laat de tabel dan vallen, als deze niet bestaat, maak hem dan gewoon aan