質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

1回答

1726閲覧

postgresSQLのリストアについて

退会済みユーザー

退会済みユーザー

総合スコア0

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2021/12/26 09:12

編集2021/12/26 11:48

postgresSQLでdumpした後、リストアしたいのですが

pg_restore -C -d DB名 バックアップファイル名

でリストアしたいのですがdatabaseがdoes not existになります。

Cオプションを使用すればリストア前にdオプションで指定された名前でDB作成されると見たのですが間違ってますでしょうか??

Version
psql (PostgreSQL) 11.5

OS
Windows11

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/12/26 09:27

そもそもどうやってダンプしたものでしょうか。pg_dumpコマンドかpg_dumpallコマンドか。
退会済みユーザー

退会済みユーザー

2021/12/26 09:47

すいません言葉足らずでした。 `pg_dump -Fc database名 > backup_file名 ` です。 アーカイブ形式なのでpg_restore コマンドは使える認識です。
m.ts10806

2021/12/26 11:02 編集

質問は編集できるので本文提示を。 >Versionは11系統です。 マイナーバージョンまで含めてバージョンコマンドで出る内容そのまま提示してください。 導入したOSとバージョンも含めて
退会済みユーザー

退会済みユーザー

2021/12/26 11:58

実際に打ったコマンドです。 pg_dump -Fc -U postgres sdp > sdp_cli.dmp pg_restore -C -d hogehoge -Fc -U postgres sdp_cli.dmp エラー内容 pg_restore: [アーカイバ(db)] データベース"hogehoge"への接続が失敗しました: FATAL: database "hogehoge" does not exist
m.ts10806

2021/12/26 20:09

>Cオプションを使用すればリストア前にdオプションで指定された名前でDB作成されると見たのですが その出典(考察の根拠)を明示してください。
退会済みユーザー

退会済みユーザー

2021/12/27 00:55

https://qiita.com/rice_american/items/ceae28dad13c3977e3a8 この方の記事を参考にしたのですが、ちょっと私の解釈がずれてる可能性がありますね・・ 公式のリファレンスを見ると「このオプションがある場合、-dで指定したデータベースは最初のDROP DATABASEとCREATE DATABASEコマンドの発行時にのみ使用されます。」なのでdoes not existは当たり前ですね・・
guest

回答1

0

ベストアンサー

リストア時にdatabaseも作成するなら、pg_restoreだけでなくpg_dump時点で-Cオプションが必要です。
pg_restoreの-Cオプションは、ダンプファイル内のCreate Databaseコマンドを実行するかどうかのオプションであり、元となるコマンドはpg_dumpの際に出力されていなければなりません。
※-cオプションも付けておいた方が無難だと思います。
pg_dump

-c
--clean
データベースオブジェクトを作成するコマンドの前に、データベースオブジェクトを整理(削除)するコマンドを書き出します。 (--if-existsも指定されなければ、リストア先のデータベースの中に存在しないオブジェクトがある場合に、害がないエラーがいくつか発生するかもしれません。)

このオプションは平文形式の場合にのみ有効です。 アーカイブ形式では、pg_restoreを呼び出す時にこのオプションを指定することができます。

-C
--create
初めにデータベース自体を作成するコマンドを出力し、その後、作成したデータベースに接続するコマンドを出力します (このようなスクリプトを使用すると、スクリプトを実行する前に対象のインストレーションの中のどのデータベースに接続すればよいかという問題を考える必要がなくなります)。 --cleanも同時に指定されている場合、このスクリプトは接続する前に対象データベースを削除し再作成します。

--createでは出力に、もしあるならデータベースのコメントも含まれます。また、あらゆる設定変数の設定、すなわち、このデーベースを対象としているALTER DATABASE ... SET ...とALTER ROLE ... IN DATABASE ... SET ...コマンドも含まれます。 --no-aclが指定されていない限り、データベースに対するアクセス権限自体もダンプされます。

このオプションは平文形式の場合にのみ有効です。 アーカイブ形式では、pg_restoreを呼び出す時にこのオプションを指定することができます。

投稿2021/12/26 13:25

編集2021/12/27 00:28
sazi

総合スコア25206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問