[pgsql-jp: 41071] Re: エンコーディングの異なるデータベースのバックアップ、リストアについて

MauMau maumau307 @ gmail.com
2012年 3月 29日 (木) 19:43:00 JST


小沢さん


MauMauといいます。

9.1のpg_dumpでは次のように-Eが使えます。
しかし、8.0にはこの記述がないため、8.1以降で追加された機能だと思います。

[マニュアルからの抜粋]
-E encoding
--encoding=encoding
指定した文字セット符号化方式でダンプを作成します。デフォルトではダンプはデータベースの符号化方式で作成されます。(PGCLIENTENCODING環境変数を好みのダンプ時の符号化方式に設定することで、同じ結果を得ることができます。)

そこで、8.0と同じマシンか別のマシンに9.1をインストールし、
9.1のpg_dumpで8.0のサーバに接続してダンプを取得されてみてはいかがでしょう。
結果をこのMLで共有していただければ幸いです。

それがうまくいかなかった場合は、何らかの文字コード変換ツールでダンプファイルを変換することになります。
Linuxではたいていiconvというコマンドが入っています。
たとえば、シフトJISからUTF8に変換するには、次のように実行します。

iconv -f SJIS -t UTF8 dump.sql > dump_UTF8.sql


以上です。

----- Original Message ----- 
From: "小沢 和也 (Kazuya Ozawa)" <ozawa @ nippa.co.jp>
To: "PostgreSQL Japanese Mailing List" <pgsql-jp @ ml.postgresql.jp>
Sent: Thursday, March 29, 2012 4:06 PM
Subject: [pgsql-jp: 41069]エンコーディングの異なるデータベースのバックアップ、リストアについて


> お世話になります。小沢と申します。
>
> バージョン8.0.14で作られた、SQL_ASCIIのデータベースを、
> 8.4にUTF8でリストアしたいのですが、単純にリストアしても
> うまくいかないようです(当たり前かと思いますが)
>
> バックアップ時にUTF8で出力する、またはリストア時に
> UTF8に変換する、といった事は可能なのでしょうか。
> また、これらを可能にするツールなどがあるのでしょうか。
>
> これらが出来ない場合は、二つのデータベースをつなげて、
> SELECTとINSERTでこまめにコピーするアプリを作るしか
> 無いのでしょうか。
>
> 良い方法をご存知の方は、ぜひご教授お願いいたします。
>
> 環境:
> Windows版Postgres 8.0.14と8.4
> OS:2000、XP、Vista、7等
> 



pgsql-jp メーリングリストの案内