mySQL命令行导入CSV给我NULL

时间:2016-03-09 21:42:23

标签: mysql csv

我习惯使用PHPmyadmin来管理我的mySQL数据库,但我开始使用命令行了很多。我正在尝试将CS​​V文件导入名为source_data的表中,看起来像这样......

+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| id        | int(11)     | NO   | PRI | NULL    | auto_increment |
| code      | varchar(10) | YES  |     | NULL    |                |
| result    | char(1)     | YES  |     | NULL    |                |
| source    | char(1)     | YES  |     | NULL    |                |
| timestamp | varchar(30) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+

我的CSV文件看起来像这样......

code,result,source,timestamp
123 ABC,,,
456 DEF,,,
789 GHI,,,
234 JKL,,,
567 MNO,,,
890 PQR,,,

我正在使用此命令..

LOAD DATA INFILE '/home/user1/data.csv' INTO TABLE source_data FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 ROWS;

这会插入正确的行数,但每一行只是说NULL,我哪里错了?

2 个答案:

答案 0 :(得分:2)

由于CSV文件没有所有表列(它缺少id列),因此您需要指定应明确写入的列。

LOAD DATA INFILE '/home/user1/data.csv' 
INTO TABLE source_data 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
IGNORE 1 ROWS
(code, result, source, timestamp);

答案 1 :(得分:1)

好吧,我希望这不是一个案例,你说表名是 source_data ,在命令中名称是数据