web-dev-qa-db-ja.com

pg_dump -sを取得してCREATEDATABASEコマンドを含めるにはどうすればよいですか?

複数のデータベースを含むpostgresqlデータベースサーバーがあります。

postgres=# \list
                               List of databases
     Name     |  Owner   | Encoding  | Collate | Ctype |   Access privileges   
--------------+----------+-----------+---------+-------+-----------------------
 test1        | postgres | UTF8      | C       | C     | 
 test2        | postgres | SQL_ASCII | C       | C     | 
 test3        | postgres | SQL_ASCII | C       | C     | 
 test4        | postgres | SQL_ASCII | C       | C     | 
 template0    | postgres | SQL_ASCII | C       | C     | =c/postgres          +
              |          |           |         |       | postgres=CTc/postgres
 template1    | postgres | SQL_ASCII | C       | C     | postgres=CTc/postgres+
              |          |           |         |       | =c/postgres
(6 rows)

ダンプしようとしているデータベースのスキーマ(CREATE DATABASEステートメントを含む)を含むダンプファイルを作成する方法が必要です。

これまでのところ、私はそれを理解しました:

pg_dump -s -U postgres -d test1 > test1_only.sql

test1データベース専用のスキーマを作成しますが、CREATEDATABASEコマンドは含まれていません。 CREATE DATABASEコマンドを表示させることができた唯一の方法は、次のことを行うことでした。

pg_dumpall -s -U postgres > /schema_alldatabases.sql 

すべてのデータベースのスキーマをダンプします。しかし、これにはもちろん、すべてのデータベースのすべてのスキーマが含まれます。このファイルを復元するサーバーには、すでにtest3とtest4があります...スキーマが異なるため、これらを上書きしたくありません。

Pg_dump-sコマンドにCREATEDATABASEコマンドを含める方法はありますか?または、pg_dumpallを使用して、復元するものを制御することになっていますか?もしそうなら、ダンプファイルからtest1を復元する方法を教えていただけますか?

ありがとう。

12
dot

使用する --createまたは-Cオプション

pg_dump --create -s -U postgres -d test1 > test1_only.sql

データベース自体を作成し、作成されたデータベースに再接続するコマンドで出力を開始します。 (この形式のスクリプトでは、スクリプトを実行する前に、接続先のインストールでどのデータベースに接続するかは関係ありません。)-cleanも指定されている場合、スクリプトはターゲットデータベースを削除して再作成してから、再接続します。

http://www.postgresql.org/docs/current/static/app-pgdump.html

12
Clodoaldo Neto