6

オブジェクトに関するコメントのない pg_dumpと同じように? COMMENT ON、すべてのオブジェクトのコメント (で作成された) を一度にすばやく削除するコマンドを知っている人はいますか?

今のところ、各テーブル/ビュー/列のコメントを 1 つずつ無効にする SQL スクリプトを生成する bash に頼りましたが、特に 4000 列を超えると非常に遅くなります。
例:

COMMENT ON COLUMN table1.column1 IS NULL;
COMMENT ON COLUMN table1.column2 IS NULL;
COMMENT ON COLUMN table1.column3 IS NULL;
...
4

3 に答える 3

2

わかりました、あなたの助けのおかげで、次のコマンドが非常に便利であることがわかりました:

特定のオブジェクト (ここでは mytable) の特定の列位置からコメントを削除するには、次のようにします。

DELETE FROM pg_description WHERE (SELECT relname FROM pg_class WHERE oid=objoid)='mytable' AND objsubid=2;

...しかし、COMMENT ON mytable.myfield IS NULL; を使用するよりも効率的ではないことに注意してください。

ここで、ユーザー定義のビューとその下にある列からすべてのコメントを削除するには、次のようにするとうまくいきます。

DELETE FROM pg_description WHERE (SELECT relkind FROM pg_class WHERE oid=objoid)='v' AND (SELECT relname FROM pg_class WHERE oid=objoid) ~ 'v_';

どこ:

  • (SELECT relkind FROM pg_class WHERE oid=objoid)='v': すべてのビュー
  • (SELECT relname FROM pg_class WHERE oid=objoid) ~ 'v_' : 追加のセキュリティ、私のビューの名前はすべて 'v_' で始まります
于 2013-06-21T20:23:53.433 に答える