Postgresqlについての質問です。

サーバーを移転する関係で、データベースのバックアップを取り、データベースの内容を移行しようと思っているのですが、どうもうまくいきません。
(バックアップはとれました)
どうやら文字コードの問題らしく、データベース自体はEUC-JPであるにも関わらず、テーブルの中にShift-JISの文字が含まれているためか、リストアを行うときに以下のようなエラーが出ます。

CONTEXT: COPY 'テーブル名', line 'Shift-JISな文字がある行'

エラーの発生する行を1行ずつデータを取り除いて、エラーの起こる行のリストアについては他の手段を考えようかと思ったのですが、どうも千レコード近くもShift-JISの含まれるデータがあるようで、現実的ではありません。

COPY BINARYにしてリストアすれば解決するのかと思ったら、以下のようなエラーが出て、やはりダメでした。

COPY file signature not recognized

何かしらの解決方法はありませんでしょうか。
よろしくお願いします。


バックアップ元のバーションは7.4.9、リストア先のバージョンは8.1.4です。

回答の条件
  • 1人3回まで
  • 登録:2006/08/23 19:45:57
  • 終了:2006/08/25 15:54:05

回答(2件)

id:kunyami No.1

kunyami回答回数24ベストアンサー獲得回数42006/08/24 15:19:13

ポイント42pt

client_encodingの設定は適切にされていますか?

  set client_encoding='Shift-JIS';

としてからcopy~from~としてはいかがでしょう?

あるいは、バックアップ時とリストア時で明示的にclient_encodingに同じ値を指定すればうまくいきそうな気がします。

id:darsrock

エンコードが、多くはEUC-JPで入っているのですが、たまにShift-JISのレコードも存在するといった感じなので、client_encodingはあんまり意味ないようです。

2006/08/24 21:44:15
id:hamster009 No.2

hamster009回答回数3431ベストアンサー獲得回数502006/08/25 02:31:19

ポイント28pt

mysqlだとそういう場合は、文字コードを変換しない、バイナリーで扱うというオプションでコンパイルするのですが、postgresqlでできるかどうかはわかりません。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません