MySQLのインポートで少々はまったのでメモ。
まずは標準的なコマンド。
LOAD DATA INFILE "source.csv" INTO TABLE target_table
FIELDS TERMINATED BY ',' ENCLOSED BY '"';ファイル名のセパレーターはWindowsの場合、\になります。
そして、エラー。。
ERROR 1406 (22001): Data too long for column 'ERROR_COLUMN_NAME' at row 1ヘッダー行もデータ行として含まれてしまうので、省く必要があります。
LOAD DATA INFILE "source.csv" INTO TABLE target_table
FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 LINES;これで一部は成功、失敗するケースもあり。どもうカラムの列順がDBとCSVで違うらしい。この部分を修正したらなんとかインポートできた。
ただ、1つだけ
ERROR 1262 (01000): Row 1 was truncated; it contained more data than there were input columnsというエラーが。列数が合わないと言うんだけど、どう見ても合ってました。 仕方がないので、データを囲ってるダブルクォートを外し、ENCLOSEDを無指定にするとOKでした。 (これはいまだに謎)
