011-299-3222 平日9:00~18:00
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に変換されて移行しました。

人気の記事

https://plugins.co.jp/2015/10/microsoft-sql-server%e3%81%a7%e8%a4%87%e6%95%b0%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%82%bf%e3%83%b3%e3%82%b9%e3%82%92%e7%a8%bc%e5%83%8d%e3%81%95%e3%81%9b%e3%82%8b/
https://plugins.co.jp/2020/07/redmine_to_bi/
https://plugins.co.jp/2015/09/windows-server-apache-iis/