LoginSignup
0
0

More than 1 year has passed since last update.

PostgreSQL 8.4からECU-JPのデータベースを10.18に移行しようとしたら文字化けした話

Posted at

古いPostgresだと機種依存文字はSJISで持ってるのが原因で、リストアできてもエラーが出たり、取り込めても文字化けしてたり手間かかりました。

前提条件

  • Windows環境
  • 旧環境:PostgresSQL 8.4
  • 新環境:PostgresSQL 10.18
  • 旧環境のデータべースの文字エンコーディング:EUC-JP

試してみたこと

  • ECU_JPのまま移行 → 機種依存文字が文字化け
  • SJISに変換して移行 → createdb --locale=C --encoding=sjis --template=template0 hogehogが失敗
  • SJIS指定で出力したdmpファイルをUTF-8に変換してpsqlでリストア → 機種依存が変換できないとのエラー

成功した手順

結局UTF-8で移行することになりました。

旧環境でdumpを取る

pg_dump -E SJIS -v --inserts [対象のデータベース] > [出力ファイルパス]

-EスイッチでSJISを指定して出力(文字化けを防ぐ)

出力ファイルを編集する

  1. 出力ファイルを開く
  2. 一行目に\encoding UTF8;を追加
  3. SET client_encoding = 'SJIS';という記述があった場合SET client_encoding = 'UTF-8';に変更
  4. 文字エンコーディングをUTF-8に変更して保存

新環境でデータべースを作成

createdb --locale=C --encoding=UTF8 --template=template0 [データベース名]

ダンプファイルからデータをリストア

psql -f [dmpファイルパス] [データベース名]
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0