SOFTELメモ

Softel Inc.

【MySQL】LOAD DATA INFILE するときのファイルの文字コード

問題

LOAD DATA INFILE すると、文字化けした。

ファイルの文字コード変えないとだめ?文字コード何にしたらいい?

答え

MySQLのLOAD DATA INFILEでは、character_set_databaseシステム変数の文字セットを使う。

UTF-8のファイルが正しく読み込めたとしたら、それはcharacter_set_databaseがutf8だったのだろう。

Shift_JISのファイルを読み込みたかったら、SET character_set_database=sjis; を設定すればよい。

SET NAMES SJIS; などは影響しない。

例) 郵政公社の郵便番号CSV(Shift_JIS)をそのまま取り込むSQL。

#これでShift_JISのファイルが取り込める
set character_set_database=sjis;

#KEN_ALL.CSVは郵政公社から取ってきたファイルで文字コードはわざわざ変換したりしていない
load data infile "/tmp/KEN_ALL.CSV"
into table test.postaldata
FIELDS
    TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
    ESCAPED BY ''
LINES
    STARTING BY ''
    TERMINATED BY '\r\n'
IGNORE 0 LINES
(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15);

参考

http://dev.mysql.com/doc/refman/5.1/ja/load-data.html

関連するメモ

コメント