誰かがこれを手伝ってくれますか?スクリプトを使用して、データベース内のすべてのオブジェクトを見つける必要があります。これが必要な理由は、すべてのデータベースオブジェクトの所有者を変更するように求められるため、最初にすべてのオブジェクトを一覧表示する必要があるためです。
1229 次
4 に答える
2
おそらく、代わりにREASSIGN OWNEDが必要だと思います。すべてのオブジェクトを識別する必要はなく、ユーザーだけを識別する必要があります。
于 2013-01-17T13:25:23.423 に答える
1
PostgreSQL(またはその他のほとんどすべてのRDBMS)では、メタデータテーブル(システムカタログ)を確認することをお勧めします。
例。すべてのテーブルが必要です。
db => \d pg_tables
View "pg_catalog.pg_tables"
Column | Type | Modifiers
-------------+---------+-----------
schemaname | name |
tablename | name |
tableowner | name |
tablespace | name |
hasindexes | boolean |
hasrules | boolean |
hastriggers | boolean |
db => select tablename from pg_tables;
すべてのテーブルのリストが表示されます。クエリを使用してスクリプトを作成し、必要なテーブルの所有権を変更できます。
同様に、カタログ内の他のビュー/テーブルをクエリして、他のオブジェクトタイプ(シーケンス、インデックス、名前を付ける)を取得できます。
于 2013-01-17T13:22:16.820 に答える
1
すべてのオブジェクトを role から role に変更する場合はA
、B
次のようにしますREASSIGN OWNED
。
REASSIGN OWNED BY A TO B
于 2013-01-17T13:25:57.007 に答える
0
pg_dumpとpg_restoreを実行して新しいデータベースを作成できる場合は、pg_restoreに--no-ownerフラグを追加し、所有権を設定するユーザーとしてpg_restoreを実行すると機能するはずです。
于 2013-01-17T17:34:43.907 に答える