来自.CSV的'LOAD DATA INFILE'的警告 - 整数和日期

时间:2013-07-11 14:38:06

标签: mysql sql csv load file-io

这可能是一个非常简单的问题,但对于我的生活,当我尝试将此CSV文件导入到我的SQL表中时,我看不到我所缺少的内容。

我一直以我的int'idRefs'结尾为0,而我的日期'dob'全部为12 31 1969


警告示例:

| Warning | 1366 | Incorrect integer value: '
10002' for column 'idRef' at row 1  |
| Warning | 1265 | Data truncated for column 'dob' at row 1 

LOAD DATA INFILE语句 -

mysql> LOAD DATA INFILE '/home/user/Documents/pplList.csv' INTO TABLE people 
FIELDS TERMINATED BY ',' LINES TERMINATED BY '"' IGNORE 1 LINES 
(idRef, lastName, firstName, dob, rsNum, slNum, firstVisit, pplPref, coachName);

CSV中的一些例子 -

idRef,lastName,firstName,dob,rsNum,slNum,firstAppt,pplPref,coachName"
10001,BlankA,NameA,4/15/68,1000000,4600000,3/31/08,Positive,John Jay"
10002,BlankB,NameB,10/28/78,1000001,4600001,8/19/11,Positive,John Jay"

'people'表SQL代码 -

DROP TABLE IF EXISTS people;
CREATE TABLE people
(
id   smallint unsigned NOT NULL auto_increment,
idRef   int unsigned NOT NULL,
lastName    varchar(255), 
firstName   varchar(255),
dob   date NOT NULL,
rsNum   int unsigned NOT NULL,
slNum   int unsigned NOT NULL,
firstAppt   date NOT NULL,
pplPref   varchar(255),
coachName   varchar(255),
PRIMARY KEY   (id)
);

1 个答案:

答案 0 :(得分:1)

idRef

我不知道为什么你选择使用双引号来结束你的行,但LINES TERMINATED BY '"'选项does take care of that

但是,由于您覆盖了默认行终止符,因此您的实际换行符不再被视为数据;因此,每条id数据的开头都有一个换行符。

这在警告中显而易见。

我完全避免使用"并使用正常的行结尾,但快速修复是:
LINES TERMINATED BY '"\n'

dob

出生日期问题有点不同,我不确定那个,但我会考虑在CSV文件中以标准格式存储日期,因为它们相当含糊不清现在。

而不是4/15/68,请尝试1968-15-04

MySQL可能会将两年的日期68解释为1968(我愿意),虽然the DATE column supports that year (and all other years going back to 1000!),但它可能会选择根据您的弱输入格式应用进一步的限制

  

DATE类型用于具有日期部分但没有时间部分的值。 MySQL以DATE格式检索并显示'YYYY-MM-DD'个值。支持的范围是'1000-01-01''9999-12-31'