[pgsql-jp: 31802] Re: pg_dumpファイルのリストアエラー

Imaoka Yumiko shinoi @ osk2.3web.ne.jp
2003年 12月 16日 (火) 17:05:10 JST


今岡と申します。
かなり時間がたってしまった話題で恐縮ですが、その後の報告をさせて戴きます。

pg_dumpしたファイルをリストアする際に、下記のようなエラーが出てリストアが出
来ないと
いう問題でした。

psql:exist_4.out:338:ERROR:copy:line 7142, Invalid EUC_JP character sequence
found(0x8043)

川崎様からperlのプログラムを戴き、また加藤@川崎さまからnkfでダンプファイル
を変換して
みてはという意見を戴き、それぞれ試してみました。
ユーザの環境でやってみることは出来ませんでしたので、PostgrSQLのバージョンは
違いますが、その点は問題にならないと思われる結果でした。

解決策
1)ダンプデータをnkfでeucに変換してリストアする
2)ダンプデータを添付されていたperlのプログラムで変換してリストアする

1)の場合
nkf -e -x [元のダンプファイル] > [出力ファイル]
としてファイルを変換しました。
出力ファイルは問題なくリストアし、元のファイルとの差異はある1データのみでし
た。

2)の場合
プログラムのusageに従い変換しました。
出力ファイルは問題なくリストアし、元のファイルとの差異はある1データのみでし
た。
1)のデータと同じです。

誤った文字コードがあるとされたデータはひとつしか見つかりませんでした。
リストアの際には複数のデータがエラーとなっていたのでおかしいと思い、
その後またいろいろ考えたのですが、もしかして名称などに使われている
半角片仮名が問題なのではないでしょうか。
Windows上でVB+MDBのアプリケーションからデータを持ってきていまして、
その際に商品名などの列で沢山の半角カナが入っていて特に変換など
せずに運用しています。それをリストアする際に、COPYコマンドが文字コードの
判断に誤っている、というのが私の推理なのですが。

データに半角片仮名が混じっていても、nkfで変換すれば問題なくリストア出来るの
で、
この方法でやっていくのが一番いいかなと思っています。
でも、もっといいのは半角カナを使わないことですね。




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