BLOG ブログ
サーバ移行しつつ、PostgreSQLの文字コードをEUCからUTF-8に変更する場合の手順です。ほぼ、下のページに紹介されている手順どおりです。
PostgreSQLをEUC-JPからUTF-8環境に移行する!
ちなみに移行作業日現在のPostgrSQLのバージョンは、
旧サーバPostgreSQL:8.3.5
新サーバPostgreSQL:8.4.20
でした。
また、どちらのサーバもPostgreSQL用にpostgresというユーザがいるものと仮定し、postgresで操作するものとします。
旧サーバ:
pg_dump database_name > database_euc.dump
とpg_dumpコマンドでバックアップをとります。
旧サーバでも新サーバでもどちらでもいいので、nkfコマンドを使ってEUCからUTF-8に変換します。
nkf -w database_euc.dump > database_utf8.dump
nkfコマンドはテキストの文字コードを変換するだけですので、database_utf8.dumpを修正します。
SET client_encoding = ‘EUC_JP’;
という記述が割と前半部分にありますので、ここを、
SET client_encoding = ‘UTF-8’;
と変更します。
後は新サーバにリストアするのみです。新サーバでUTF-8のデータベースを作成してインポートします。
新サーバ:
createdb database_name –locale=C –encoding=UTF8 –template=template0
psql -d database_name -f database_utf8.dump > restore.log 2>&1
紹介したページの説明どおり、restore.logを見て、エラーがないか確認しましょう。
これでEUCだったPostgreSQLのデータベースが、無事UTF-8に変換されて移行しました。