CSVのデータをMySQLにインポートしたいです。
OSは、ubuntuを利用しています。
LOAD DATA INFILE 構文を利用しようとしました。
http://dev.mysql.com/doc/refman/5.6/ja/load-data.html
「cls_site」というテーブルに、下記のフィールドがあります。
+-----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(100) | NO | | NULL | |
| index | varchar(100) | YES | | NULL | |
| address | varchar(100) | YES | | NULL | |
| issuedate| date | YES | | NULL | |
| startdate | date | YES | | NULL | |
| enddate | date | YES | | NULL | |
| owner_id| int(11) | YES | MUL | NULL | |
| rep_id | int(11) | YES | MUL | NULL | |
+-----------+--------------+------+-----+---------+-------+
CSVファイルは、「list3.csv」というファイルに、
2515,AAA工事,
2604,BBB新築工事,
・・・
・・・.
という感じで、300行ぐらい縦に続いています。
CSVファイルに書いてあるのは、上記「cls_site」テーブルでいうidとnameであり、
このidとnameを読み込ませたいと考えました。
現状、idだけ全て読み込まれた状況で、nameについては読み込まれませんでした。
mysql
1load data local infile "list3.csv" replace into table cls_site fields terminated by ',' lines terminated by '\r\n' (id,name) ;
として、idとnameを読み込ませたいのですが、うまく行かないです。
Query OK, 2 rows affected (0.10 sec) Records: 1 Deleted: 1 Skipped: 0 Warnings: 0
となり、実際に見てみると工事名が登録できていないです。
一方で、
下記のとおり1行だけ記載した、list2.csvというファイルを準備して、実行すると、うまく行きました。
2515,AAA工事,
mysql> load data local infile "list2.csv" replace into table cls_site fields terminated by ',' (id,name) ; Query OK, 4 rows affected, 2 warnings (0.15 sec) mysql> show warnings; +---------+------+------------------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------------------+ | Warning | 1366 | Incorrect integer value: '' for column 'id' at row 2 | | Warning | 1261 | Row 2 doesn't contain data for all columns | +---------+------+------------------------------------------------------+ 2 rows in set (0.00 sec) Records: 2 Deleted: 2 Skipped: 0 Warnings: 2
warningsが出ているものの、実際に見てみると、しっかりデータが入っています。
複数行の場合にうまくいかないということは、改行の扱い(lines)が間違っているのでしょうか?
お分かりの方、ご教示頂ければ幸いです。
どうぞ、よろしくお願いいたします。
【追記】
kiriさん、ありがとうございます。
下記の通り、やってみました。
mysql> load data local infile "list3.csv" replace into table cls_site fields terminated by ',' lines terminated by '\n' (id,name); ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`project`.`cls_invoice`, CONSTRAINT `cls_invoice_site_id_id_761f60d2bf350e0d_fk_cls_site_id` FOREIGN KEY (`site_id_id`) REFERENCES `cls_site` (`id`))
上記のエラーが出ましたが、
これは、LOAD DATA INFILEの問題とは別の問題でしょうか。


回答1件
あなたの回答
tips
プレビュー