複数のデータベースを含む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を復元する方法を教えていただけますか?
ありがとう。
使用する --create
または-C
オプション
pg_dump --create -s -U postgres -d test1 > test1_only.sql
データベース自体を作成し、作成されたデータベースに再接続するコマンドで出力を開始します。 (この形式のスクリプトでは、スクリプトを実行する前に、接続先のインストールでどのデータベースに接続するかは関係ありません。)-cleanも指定されている場合、スクリプトはターゲットデータベースを削除して再作成してから、再接続します。
http://www.postgresql.org/docs/current/static/app-pgdump.html