こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

日本語TSVファイルのLOAD DATA INFILE が失敗

日本語(EUCJP)を含むタブ区切りテキストのインポートに失敗しており、
行き詰ってしまいました。考えられる原因等お気付きありましたら、
ご指摘頂ければ助かります。

尚、my.cnfで[mysql], [mysqld], [mysqlimport], [mysqldump]は、
default-character-set=ujis
で設定しています。

mysql> select version();
+---------------------+
| version() |
+---------------------+
| 5.0.27-standard-log |
+---------------------+
1 row in set (0.00 sec)

mysql> LOAD DATA INFILE "/hoge/hoge.csv" INTO TABLE test;
Query OK, 5 rows affected, 15 warnings (0.00 sec)
Records: 5 Deleted: 0 Skipped: 0 Warnings: 15

mysql> show warnings;
+---------+------+-----------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------+
| Warning | 1265 | Data truncated for column 'mycolumn1' at row 1|
| Warning | 1265 | Data truncated for column 'mycolumn2' at row 1|
| Warning | 1265 | Data truncated for column 'mycolumn3' at row 1|
| Warning | 1265 | Data truncated for column 'mycolumn1' at row 2|
| Warning | 1265 | Data truncated for column 'mycolumn2' at row 2|
| Warning | 1265 | Data truncated for column 'mycolumn3' at row 2|
| Warning | 1265 | Data truncated for column 'mycolumn1' at row 3|
| Warning | 1265 | Data truncated for column 'mycolumn2' at row 3|
| Warning | 1265 | Data truncated for column 'mycolumn3' at row 3|
| Warning | 1265 | Data truncated for column 'mycolumn1' at row 4|
| Warning | 1265 | Data truncated for column 'mycolumn2' at row 4|
| Warning | 1265 | Data truncated for column 'mycolumn3' at row 4|
| Warning | 1265 | Data truncated for column 'mycolumn1' at row 5|
| Warning | 1265 | Data truncated for column 'mycolumn2' at row 5|
| Warning | 1265 | Data truncated for column 'mycolumn3' at row 5|
+---------+------+-----------------------------------------------+
15 rows in set (0.01 sec)

こんな状態です。ちなみに、mycolumn1,2,3のカラムは、
日本語を格納する為のカラムで、varchar(255), text型です。
他のカラムには英数字データが入るのですが、そちらは成功しています。

上記Warning文を見た限りでは、MySQLによりデータが加工されている
ようですが。。。。

この問題を解決する為に、他に設定するべきことや、
必要なコマンドがありますでしょうか?

またコマンドラインからの、mysqlimportも同様に失敗しました。

日本語テキストのインポートによるテーブルデータ格納は
MySQLの仕様的に可能かと思われますが、上記問題がおきてしまいました。

お気付きありましたら、ご指摘いただけたら助かります。

投稿日時 - 2007-06-14 01:55:15

QNo.3083040

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

truncated =「切りつめた」なので、文字数オーバーなのでは?
eucでは、全角一文字につき2バイトだから、全て全角で入力されているとして
(255byte )/2 ≒ 127文字までかな?
そして、最後の128文字目は、半分にされてしまうので、文字としてきちんと表示できなくなります。

http://dev.mysql.com/doc/refman/4.1/ja/storage-requirements.html

全部text型にしてみたら?
max 2^16 ≒ 6万バイトまで可能

投稿日時 - 2007-06-14 17:23:17

お礼

hrm_mmm様

ご回答、誠にありがとうございました。
ですよね、、、しかし、日本語で7文字のデータが、
text型なのに、なぜかトランケートされてしまうのです。。。

Warning (Code 1265): Data truncated for column 'hoge' at row 1

むー、なぞですね。
多分自分のやり方に、どこかDoubtがある気がしますが。
ただInsert into ~でTerminalからコピペすると、問題なく格納されるのです。。。

改めて調査してみます。
参考になりました、ありがとうございました。

投稿日時 - 2007-06-15 00:22:35

ANo.1

各行の日本語データを「”」で囲こみ、「ENCLOSED BY '"'」オプションを加えたLOAD DATA INFILEコマンド発行を試してみてください。

私も毎日、日本語データを含むLOAD DATA INFILEコマンドを使用していますが、まったく問題が起きません。

投稿日時 - 2007-06-14 08:17:40

お礼

mooboogie様

ご回答、誠にありがとうございました。
ENCLOSED BYをつけてやってみました。
しかし。。。

全ての文字列格納箇所を、text型にし、
mysql> LOAD DATA INFILE "/var/www/data/hoge.csv" INTO TABLE hoge_table FIELDS TERMINATED BY '\t' ENCLOSED BY '"';

してみたのですが、やはり、EUCJPの日本語のカラムだけ、失敗して
しまいます。。。尚日本語は”で括りました。
テキストファイルは次の内容です。

haitta<tab>"あいう"<tab>"かきく"<tab>"さしす"<tab>1

クエリ結果:
Query OK, 1 row affected, 3 warnings (0.01 sec)
Records: 1 Deleted: 0 Skipped: 0 Warnings: 3
※hoge1, hoge2, hoge3は、各々text型。

Warning (Code 1265): Data truncated for column 'hoge1' at row 1
Warning (Code 1265): Data truncated for column 'hoge2' at row 1
Warning (Code 1265): Data truncated for column 'hoge3' at row 1
mysql> select * from hoge_table;
+-----------+-------+----------+--------+------+
| id | hoge1 | hoge2 | hoge3 | no |
+-----------+-------+----------+--------+------+
| haitta | | | | 1 |
+-----------+-------+----------+--------+------+
1 row in set (0.00 sec)

改めて調査してみます。
いずれにせよ、参考になるご回答ありがとうございました。
御礼申し上げます。

(多分自分のやり方に、自分で気付いていない何か問題があるはずなのですが。。ちなみにMySQLはapt-get installでインストールしており、
変えたところは、/etc/my.cnfを配置して、default-charsetいじったぐらいだったかと思うのですが。。。)

投稿日時 - 2007-06-15 00:39:05

あなたにオススメの質問