2013年5月28日火曜日

PostgreSQL インポートエラー

サーバリプレイスの為、PostgreSQL 8.1 コードセットUTF-8で作られたデータベースをpg_dumpでexportして、
新しいサーバのPostgreSQL 8.1にimportしようとしたところ、
invalid byte sequence for encoding "UTF8": 0xc030
でimportできない。(500MぐらいのDB)データ中に不正なコードがあるようで、
手当てするにもいったいどれだけあるのかも不明・・・

そこで、以下の手順を思いついた。nkfでUTF-8からUTF-8に変換したらいいのではないかと。

nkf -xw --no-best-fit-chars src.dmp > dst.dmp
dropdb abcd
createdb abcd
psql abcd < dst.dmp

importできました。メモに残しておきます。
結局、src.dmp と dst.dmpの差分を取ると、文字化けしていたレ―コードは2レコードだった。


※ -xは、半角カナは半角カナのままにする。
--no-best-fit-charsは、適当なキャラクターに変換しない。(例:全角「-」は全角「-」のまま)

0 件のコメント:

コメントを投稿