チェ・ゲバムラの日記

脱犬の道を目指す男のブログ

MySQLでCSV形式の大量データを一括で取り込んだときに改行コードでハマった

通常使うInsert文とかをターミナルとかでたたくと恐ろしく時間がかかるので、
通常は下記のようにLoad data文で外部ファイルを読み込むらしい。

mysql> load data infile "/var/www/html/hoge/import.csv" into table Answer fields terminated by "," lines terminated by "\n";

CSVは下記
1,aaaaa,\N
2,bbbbb,\N
3,ccccc,\N


idは指定必須、NULL設定は\Nとするらしい。
なーんだ簡単じゃんと思って実行するとidが入らなかったり、NULLがNだけになったりしておかしい。

mysql> select * from Answer limit 10;

id | number | used
| | aaaaa | N
| | bbbbb | N
| | ccccc | N



今回4万件程のレコードがあったので、idはエクセルの自動採番機能使ってCSVで保存したものを使ったのだが、
どうもその改行コードが問題だったらしい。
解決策としては下記のように\r\nにすればよい。
mysql> load data infile "/var/www/html/hoge/import.csv" into table Answer fields terminated by "," lines terminated by "\r\n";


これだけのことなのに数時間ハマった。