人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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です。

●質問者: darsrock
●カテゴリ:インターネット ウェブ制作
✍キーワード:EUC-JP JIS postgreSQL はと エラー
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kunyami
●42ポイント

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

  set client_encoding='Shift-JIS';

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

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

◎質問者からの返答

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


2 ● hamster009
●28ポイント

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ