コンテンツへスキップ

MySQLでCSVインポート

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でした。 (これはいまだに謎)

© 2003 Kurusugawa Computer Inc.