忘備録として
環境
- MySQL 5.6.22
- Windows10 64bit
①改行コードに気をつけろ
LOAD DATA INFILEはデフォルトでは改行コードをLFとして扱う
データを作成したソフト等によって改行コードを指定してあげるのが良い
たとえば、Excelで作成するとデフォルトはCR+LF
CR+LF
LOAD DATA INFILE 'hoge.csv' INTO TABLE `scheme`.`table` FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';
改行コードがCRならば、'r'
改行コードがLFならば、'n'
参考
追記
csvファイルをsakuraエディタで編集していて、普段は上記コードでインポートできていたはずが、
なぜか一番上の一行しか読み込まれないという現象が起こりました。
まさかと思って改行コードをCR+LFに指定して保存してみると、案の定無事インポートできました。
改行コードが変わってしまっていたんですね…いつのまに…
②LOAD DATA INFILEのパスには日本語を使うな
簡単なことだしそもそもパスに日本語使うなって話なんですが…
クライアント側に一時的に置いたcsvファイルでLOAD DATA LOCAL INFILEしようとしたときに、
お恥ずかしながら1時間ほど無駄にしました。
ダメな例
LOAD DATA LOCAL INFILE 'C:/Users/name/Desktop/ほげ/data.csv' INTO TABLE `scheme`.`table` FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';
これでOK
LOAD DATA LOCAL INFILE 'C:/Users/name/Desktop/hoge/data.csv' INTO TABLE `scheme`.`table` FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';