[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 メーリングリストの案内