BLOG

  1. HOME
  2. BLOG
  3. PostgreSQLの文字コードをEUCからUTF-8に変換して移行する

PostgreSQLの文字コードをEUCからUTF-8に変換して移行する2015/03/05

サーバ移行しつつ、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に変換されて移行しました。