Eu enfrentei um problema muito semelhante há algum tempo e encontrei uma solução muito simples:excluir da tabela de catálogo do sistema
pg_description
diretamente . Os comentários são apenas "anexados" aos objetos e não interferem de outra forma. DELETE FROM pg_description WHERE description = 'something special';
Isenção de responsabilidade:
Manipulação direta de tabelas de catálogo é perigoso e uma medida de último recurso. Você precisa saber o que está fazendo e você está fazendo isso por sua conta e risco! Se você estragar tudo, você pode estragar seu banco de dados (cluster).
Perguntei sobre a ideia na lista pgsql-admin e recebi um resposta encorajadora de 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
Você deve certificar-se de que não há comentários que você gostaria de manter. Inspecione o que você vai excluir primeiro. Esteja ciente de que muitos objetos Postgres internos também têm comentários.
Por exemplo, para apenas excluir todos os comentários nas colunas da tabela , você poderia usar:
SELECT *
-- DELETE
FROM pg_description
WHERE objsubid > 0;
O manual informa sobre a coluna
objsubid
: