プロが教えるわが家の防犯対策術!

PostgresSQLに詳しい方、教えてください。
現在、私はネットショッピングサイトのサーバ管理をしており、データベースにPostgresSQLを使ってます。
サーバのハードが老朽化してきたため、今までの自社サーバーをやめ、レンタルサーバをかりてそこへサイト移転することになりました。
PHPやHTMLといったソース類は、容易に移転できたのですが、データベースの移転がうまく行かず困っております。
どなたかご教示ください。


■環境(移転元)
サーバ:自社サーバ
OS:Linux version 2.4.20-16.9
Postgresバージョン:psql (PostgreSQL) 7.3.4

■環境(移転先)
レンタルサーバ会社:さくらインターネット
サービス名:さくらのVPS(v3) 1G
OS:Linux version 2.6.32-279.1.1.el6.x86_64
Postgresバージョン:psql (PostgreSQL) 8.4.13

■現象
移転元のサーバにて、pg_dump -i コマンドを実施。
生成されたダンプファイルをFFFTPにて自分のWindows7のマシンに保存。
Windows7上のエディター(DreamWeaver)でファイルを開くと文字化けしています。
エディターのエンコードをシフトJIS→EUCに変更するとデータベースに入力されている文字列をきちんと見ることができます(一部文字化けは残るのですが。)ので、ここまでは成功しているように思っています。
このダンプファイルをFileZillaにて移転先のサーバにアップロード。
psqlコマンドでリストア。
あらかじめ、移転先のPostgresには移転元のデータベース名と同じものを作成し、ユーザー名も同じものを作成してあります。
ところが、いざselectコマンドを使いデータを検索してもあるはずのデータが出てきません。
テーブルはきちんと作成されているようなのですが。


どうしたらデータをきちんと移転できるのでしょうか?
どなたか、ご教示頂けないでしょうか。

A 回答 (1件)

文字コードがおかしいんじゃないでしょうか。



DreamWeaverじゃなくて、例えばサクラエディタで開いてみたらどうでしょう。そして元のファイルはEUC-JPになっているでしょうからそれをUTF-8で保存します。そしてFileZillaのところからやり直してみるといいでしょう。

とにかく、pg_dumpで出力されたファイルの中身をEUC-JPからUTF-8に変換してからpsqlで取り込むと良さそうかと存じます。

この回答への補足

ありがとうございます!
ヒントになりました。

移転元のデータベースをダンプする前に
export PGCLIENTENCODING=EUC-JP
を行い、ダンプを行ったものを一度Windows7に持ってきて、サクラエディタで開いてみたら、キレイに表示されていました。
それを移設先のサーバに持って行き、移転先でも
export PGCLIENTENCODING=EUC-JP
を行ってから、psqlコマンドでリストアしました。

このときに表示されるエラーを精査してみたところ、
ERROR: 符号化方式"EUC_JP"文字0xfce2<は"UTF8"と同じではありません
CONTEXT: user_infoのCOPY。行番号 412
のようなエラー文が多数出ているのに気づき、Windows7に戻ってサクラエディターで一箇所ずつ修正し、psqlコマンドでリストアしましたところ、きちんと表示されました!

文字コードと禁止文字が混入していたことが原因のようです。
移設元のデータベースにどうやってこの文字が混入したのかは謎ですが移設はうまくいきました。

ありがとうございます。感謝します。

補足日時:2014/02/10 11:46
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!