• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テーブル単位のリストア)

テーブル単位でのリストア方法はあるのか?

このQ&Aのポイント
  • 質問者は、pg_dumpallコマンドで作成したバックアップファイルからテーブル単位でリストアする方法があるのか尋ねています。
  • pg_dumpallのマニュアルによると、リストアはpsqlコマンドを使用する必要がありますが、テーブル単位での復元のオプションはないようです。
  • また、pg_restoreコマンドでリストアを試みたところ、エラーが発生しました。質問者は、この問題について情報を探しているが見つけられていないと述べています。

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

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.2

> 通常のエディタで開くことはもちろん、手作業で行うことは気が遠くなってしまいます。 そういうことでしたら、思いつくのは下記の様な方法でしょうか。 a. pg_dumpall ではなく pg_dump を使ってダンプする  元のDBに接続でき、現在の状態のリストアでよいならば、この方法が簡単でしょう。  例) pg_dump -h localhost -p 5432 -U user_hoge -t table_hoge db_hoge > dump.txt; http://www.postgresql.jp/document/9.2/html/app-pgdump.html b. スクリプト言語を使って対象のテーブルの箇所を抽出する  perl や ruby などを使えば、対象部分を抽出するプログラムが割りと簡単に作れるかと思います。 c. サイズの大きいファイルも扱えるエディタを使って抽出する  例えば、 vim などではサイズが大きくてもさほど不自由なく編集はできたと思います。  検索機能で該当箇所への移動・選択を行い、新旧の2ファイルを開いてコピーすれば良いかと。

trka
質問者

お礼

ありがとうございました。

trka
質問者

補足

C++で抽出プログラムを作成しました。 今のところうまく動いています。

その他の回答 (1)

  • root139
  • ベストアンサー率60% (488/809)
回答No.1

pg_dumpall で出力したダンプファイルをテキストエディタで開いてみれば分かりますが、通常のSQL文が並んでいるだけです。 したがって、リストアしたいテーブルのCREATE文やCOPY文をダンプファイルから抜き出した新たなファイルを作って psql に流し込めば、任意のテーブルだけリストアする事も出来るかと。

trka
質問者

お礼

root139様、ご回答ありがとうございます。 おっしゃるとおりですが、但しバックアップファイルはおおよそ35Gb程度あり、おおよそ100テーブルが含まれます。 通常のエディタで開くことはもちろん、手作業で行うことは気が遠くなってしまいます。 そこで、ストリームエディタを使用するなど、ご経験のある方があればお聞かせいただきたいと思います。

関連するQ&A