1

PostgreSQL サーバーをセットアップするときに最初に行うことの 1 つは、外部ソースのデータベースをインポートすることです。次のうち、正しい方法はどれですか?

  • PostgreSQL サーバーに「NEWDB」というデータベースを作成し、外部の「BACKUPDB」データベースを pg_dump から「NEWDB」にインポートします。

  • PostgreSQL サーバー上にデータベースを作成せず、"NEWDB" データベースをインポートすると、postgresql サーバー上に "NEWDB" が自動的に作成されます。

私の質問は、既存のデータベースを PostgreSQL サーバーにインポートする場合、最初にそのデータベースを作成する必要があるのでしょうか?

4

1 に答える 1

3

その必要はありませ。それはあなたが何を達成したいかによります。で単一のデータベースをダンプする場合pg_dump、コマンドは含まれません。既存のデータベースに接続する必要があります。したがって、最初に作成する必要があります。マニュアルからのアドバイス を引用します:CREATE DATABASEALTER DATABASE

データベース クラスタに template1 データベースへのローカルの追加がある場合は、pg_dump の出力を完全に空のデータベースに復元するように注意してください。そうしないと、追加されたオブジェクトの定義が重複するためにエラーが発生する可能性があります。ローカルに何も追加せずに空のデータベースを作成するには、template1 ではなく template0 からコピーします。次に例を示します。

CREATE DATABASE foo WITH TEMPLATE template0;

また:

ダンプ ファイルには、ALTER DATABASE ... SET コマンドも含まれていません。これらの設定は、データベース ユーザーやその他のインストール全体の設定とともに、pg_dumpall によってダンプされます。

pg_dumpall一方、ユーザーなどのメタオブジェクトを含むDB クラスター全体をダンプします。ステートメントを含みCREATE DATABASE、復元時に各 DB に接続します。( ) オプションDROP DATABASEを使用してステートメントを含めることもできます。そこは気をつけて。-c--clean

PostgreSQL のすべてのインスタンスには、「postgres」という名前のデフォルトのメンテナンス データベースがあり、これに接続して、たとえばデータベースを作成したり、(pg_dumpall から) 完全な復元を開始したりできます。ただし、(pg_dump からの) 単一 DB ダンプは、そのターゲット データベースに対して実行する必要があります。

ついに:

復元したら、各データベースで ANALYZE を実行して、オプティマイザが有用な統計を取得することをお勧めします。また、vacuumdb -a -z を実行してすべてのデータベースを分析することもできます。

于 2012-12-07T22:58:26.510 に答える