这可能是一个非常简单的问题,但对于我的生活,当我尝试将此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)
);
答案 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'
。