こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

pg_dumpでデータの引越し

こんにちは。postgreSQL初心者です。
古いサーバからpostgreSQLのデータを pg_dumpもしくは、pg_dumpallで取り出し、新しいサーバに入れようとしてるのですが、以下のようなエラーが出てデータが入ってくれません。
ERROR: invalid byte sequence for encoding "UTF8": 0x8a
HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".

文字コードの問題だと思うのですが、バージョンの違いや基本的な設定も関係あるのでしょうか?
環境
旧サーバ:Red hat Linux 9, postgreSQL 8.0
移転先サーバ:Fedora Core 6, postgreSQL 8.1

実行コマンド
ダンプ
pg_dump -d DB_NAME > FILE_NAME
※ファイルの中身はちゃんと出力されています。

リストア(?というのでしょうか?)
方法1: \i FILE_NAME > DB_NAME
方法2:cat FILE_NAME  | psql DB_NAME
両方ともエラーがでて、テーブルはできていても一部の中身が入りません。
行き詰まってしまっています。どうか宜しくお願いします。

また、現在設定されている文字コードを調べる方法や、お勧めの参考ホームページがございましたら教えてください。

投稿日時 - 2008-05-20 16:26:27

QNo.4036745

困ってます

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

 そのダンプがEUC-JPなんではないのかな。(ダンプを取ったときクライアントエンコーディングがEUC-JPになっていた)
 で、入れなおそうとしているFC6のデフォルトエンコーディングは多分UTF-8なのだろうからダンプをUTF-8として(クライアントエンコーディングをUTF-8として)読もうとして失敗しているのではないでしょーか。
 そのダンプを一旦nkfでUTF-8に直してしまうか、psqlのクライアントエンコーディングをEUC-JPに変更して入れてみたらどうでしょ。
 現在のDB(PostgreSQL内の全DB)のエンコーディングを調べるにはpsqlで入って\lとすれば良い、が、サーバーエンコーディングはあまり関係はないと思うよ。クライアントエンコーディングを調べるには同じくpsqlで\encodingだ。

投稿日時 - 2008-05-20 20:58:17

お礼

ありがとうございます!
ご説明頂いた内容から解決できました。

エンコーディングがRed Hat Linux内のDBはSQL_ASCIIでFC6がUTF8となっており、その違いからダンプファイルがエラーになってしまっていました。

DBのエンコーディングをSQL_ASCIIにあわせたら問題なく入ってくれました。本当に助かりました。ありがとうございます。

投稿日時 - 2008-05-21 09:54:15

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)