• ベストアンサー

LinuxからWindowsへのリストアについて

Linux版PostgreSQL7.Xからのバックアップファイルを使用し、Windows版PostgreSQL8.04へリストアをしたいと考えております。 具体的にどのようにしたら出来るのでしょうか? ざっくばらんな質問で申し訳ありません、現在試しているのですが、Window版のpgadminIIIを使用しリストアしようとしても、Linux版のバックアップファイルが認識できないようで、OKボタンが押せない状態です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

大変失礼いたしました。今回はキチンと Windows版PostgreSQL8.0.4をインストールして やってみました。 (3)の操作はやはりおっしゃるとおりになりますので、 かわりに次のようにしてください。 (2)の続き、 <1>新しく作ったDBにpsqlで接続する。 >psql -U postgres -h localhost windb <2>ダンプファイルを読み込む。 windb=# \i C:/temp/out.sql これでいかがでしょうか?

shelly11
質問者

お礼

ありがとうございます!!教えていただいた通りに実行してみたところ上手くいきました。 新たにインストールまでさせてしまって、申し訳ありませんです。。 半ば諦めて力業でやろうかと考えておりましたので、本当に本当に助かりました。 感謝の気持ちで一杯です。 この度は本当にありがとうございましたm(__)m

その他の回答 (2)

回答No.2

たしかにpgadminIIIではコケると思います。 何度もやったことがありますが、コマンドラインでリストアできると思います。 DBの文字コードは、移行前、移行後ともEUC_JPとして次のような方法で移行できます。 (ディレクトリ名など多少うろ覚えです。) (1)LinuxのPostgreSQL7.1.x のDBをダンプ ラージオブジェクトが含まれるなどの場合を除き、 バイナリではなく、プレインテキストでとります。 postgresユーザにスイッチして、 $ pg_dump -F p > out.sql (より確実には $ pg_dump -F p -d > out.sql ) こうすると out.sql というダンプファイルが出来ます。これをWindowsサーバのどこかにコピーします。 たとえばC:\temp とか。 (2)WindowsのほうにDBを作る コマンドプロンプトを開きます。 PostgreSQLのコマンドに環境変数でパスを通していない場合は、PostgreSQLのbinに移動します。 > cd C:\Program Files\PostgreSQL\8.0\bin //たとえば移行後DBが、windbという名前なら > createdb -U postgres -h localhost -E EUC_JP windb (3)ファイルを指定してリストアします。 > psql -U postgres -h localhost windb < C:/temp/out.sql コマンド実行時には、いちいちpostgresユーザのパスワードを聞いてきます。 だいたいこんな感じと思います。

shelly11
質問者

お礼

とても丁寧な回答を本当にありがとうございました。 さっそく実行してみたのですが、一番最後の > psql -U postgres -h localhost windb < C:/temp/out.sql を実行したら psql: FATAL: password authentication failed for user "postgres" というエラーが出てしまいます。 これは何が原因なのでしょうか。。 もし知っていたら度々で誠に恐縮ですが、教えて頂けると大変助かります。

回答No.1