[pgsql-jp: 25448] Re: pg_dump のデータ欠落について

Yasuhiro Hayase hayase @ hcn.zaq.ne.jp
2002年 3月 28日 (木) 11:02:19 JST


This is a multi-part message in MIME format.

--Multipart_Thu__28_Mar_2002_11:02:19_+0900_08233a40
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

早瀬です。

> この「エラーメッセージ」というのはどのようなメッセージなのでしょうか?

NOTICE:  copy: line 5070, local_to_utf: could not convert (0xb000) EUC_JP to UTF-8. Ignored

というメッセージです。


> あと、支障がなければエラーが再現する最小限のデータセット(テーブルとデー
> タ)を見せていただけると追えるかもしれませんが、現在の情報だけでは他の人
> には手が出せないと思います。

ご指摘ありがとうございます。
返事をいただけなくて困っていたのですが、当然ですね 。

文字化けしたデータをどうやってDBに登録するか悩んでいたのですが、なんとか以
下の方法で再現可能だと思います。


●環境:
Debian/GNU Linux sid (i386) と、 少し古い同sid

postgresql 7.1.3-8
libc6 2.2.5-3
または、
postgresql 7.2-7
libc6 2.2.5-4


LANG=ja_JP.eucJP

端末 rxvt


●手順

・まず、添付したファイルを、/tmp/copy-brokentbl という名前で保存してください。

・以下のコマンド、クエリを実行してください。

> psql -U postgres template1
template1=# CREATE DATABASE tmp WITH ENCODING='UNICODE';

template1=# \c tmp

tmp=# CREATE TABLE brokentbl ( dummy1 integer primary key, data text not null, dummy2 integer not null);

tmp=# SET client_encoding='unicode';

tmp=# COPY brokentbl FROM '/tmp/copy-brokentbl';

tmp=# SET client_encoding='euc_jp';

tmp=# SELECT * from brokentbl; -- 化けた文字は``?''で代用しています。
 dummy1 | data  | dummy2 
--------+-------+--------
      1 | 鍵舗? |      2
(1 rows)

tmp=# COPY brokentbl TO stdout; -- ここでデータが欠落します
1       鍵舗??

tmp=# SET client_encoding='unicode';

tmp=# COPY brokentbl TO stdout; -- client_encoding が unicode だと欠落しない
1	??笈??	2


以上です。



-- 
早瀬 康裕
大阪大学基礎工学部情報科学科数理科学コース



--Multipart_Thu__28_Mar_2002_11:02:19_+0900_08233a40
Content-Type: application/octet-stream;
 name="copy-brokentbl"
Content-Disposition: attachment;
 filename="copy-brokentbl"
Content-Transfer-Encoding: base64

MQnpjbXoiJewCTIK

--Multipart_Thu__28_Mar_2002_11:02:19_+0900_08233a40--



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