0

誰かがこれを手伝ってくれますか?スクリプトを使用して、データベース内のすべてのオブジェクトを見つける必要があります。これが必要な理由は、すべてのデータベースオブジェクトの所有者を変更するように求められるため、最初にすべてのオブジェクトを一覧表示する必要があるためです。

4

4 に答える 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 に変更する場合はAB次のようにします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 に答える