- PR -

postgreSQL8.2.4でラージオブジェクト無しのdumpを取る方法について

1
投稿者投稿内容
tks0
会議室デビュー日: 2006/12/12
投稿数: 5
投稿日時: 2008-01-23 10:45
こんにちは。

postgreSQL8.2.4でラージオブジェクト無しのdumpをとろうとしているのですが、うまくいきません。
取り方がお分かりになる方がいましたら、ご教示ください。

環境
CentOS4.6
postgreSQL8.2.4

やってみたこと
・以前のバージョン(7系)で行っていた-bオブションをつけないpg_dumpコマンドをやってみましたが、ラージオブジェクトが付いてしまいました。
dumpコマンド # pg_dump -v -Fc DB名 > dumpファイル

・-Tオプションでpg_largeobjectテーブルを除外してみましたが、リストアする時にエラーが出て正しくリストアできませんでした。
dumpコマンド # pg_dump -t '*' -T 'pg_largeobject' -v -Fc DB名 > dumpファイル
restoreコマンド # pg_restore -v -d DB名 dumpファイル

上総
大ベテラン
会議室デビュー日: 2006/06/22
投稿数: 107
投稿日時: 2008-01-24 16:23
引用:

スレ主さんの書き込み(投稿日時: 2008-01-23 10:45)より
・-Tオプションでpg_largeobjectテーブルを除外してみましたが、リストアする時にエラーが出て正しくリストアできませんでした。
dumpコマンド # pg_dump -t '*' -T 'pg_largeobject' -v -Fc DB名 > dumpファイル
restoreコマンド # pg_restore -v -d DB名 dumpファイル


コマンドライン上でエラーメッセージが出力されてませんか?
8.2系から7.4系のデータダンプを行った際に
[-t '*']でマッチするテーブルが見つかりません
[-T 'largeobject']でマッチするテーブルが見つかりません
とエラーが返ってきましたが、8.2系から8.2系からではエラーが出ないものなんですか?

あとテーブル名をシングルクォーテーションで括る必要も無いみたいですが。
tks0
会議室デビュー日: 2006/12/12
投稿数: 5
投稿日時: 2008-01-25 13:36
>上総さん
返信ありがとうございます。

8.2.4では-tや-Tオプションをつけてダンプを取るときはエラーは出ませんでした。
リストアする時にエラーがでまして、実際に接続してみたところラージオブジェクト以外のデータも正しく戻っていませんでした。

また、7.4.6のマニュアルを見ると-tオプションにワイルドカードが使えるとは書いていないので7.4.6では使えないのだと思います。
また、-Tのほうはおそらくlargeobjectではなくpg_largeobjectにすればテーブル自体は引っかかると思います。
上総
大ベテラン
会議室デビュー日: 2006/06/22
投稿数: 107
投稿日時: 2008-01-25 14:40
引用:

スレ主さんの書き込み(投稿日時: 2008-01-25 13:36)より
また、7.4.6のマニュアルを見ると-tオプションにワイルドカードが使えるとは書いていないので7.4.6では使えないのだと思います。



試しに8.2.5で[pg_dump -t '*' -f エクスポートファイル名 データベース名]コマンド
を投げてみましたが、『マッチするテーブルが見つかりません』と出力されます。

ちょっとした疑問ですが、pg_largeobjectを除く全オブジェクトのダンプが欲しい
のでしょうか?
それともpg_largeobjectを除く全テーブルのダンプですか?

前者であれば[-t '*']オプションは不要ですよね、後者であればテーブル名のリストを
作成し一つ一つダンプを作成するのも手ではないでしょうか?

バグかもしれません(安易にそうとは断定できませんが)ので、試しに[-t '*']を削除
し[-T 'pg_largeobject']のみで試してください。

こちらの環境で[-t]オプションのワイルドカードで成功したのは、[-t *.テーブル名]時
のみがエラーも発生せずに正しくエクスポートされました。
1

スキルアップ/キャリアアップ(JOB@IT)