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";
これだけのことなのに数時間ハマった。