从.CSV在“LOAD DATA INFILE”警告 - 整数和日期(Warnings on 

2019-09-26 20:09发布

这可能是一个非常简单的问题,但我的生活我不知道我缺少什么,当我尝试导入该CSV文件到我的SQL表。

我一直在结束了我诠释“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 

加载数据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"

“人”表的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)
);

Answer 1:

idRef

我不知道你为什么选择结束与双引号你的线条,但LINES TERMINATED BY '"'选项, 并采取照顾 。

不过,既然你推翻了默认的行终止,您的实际换行符不再被认为是比任何东西更数据; 因此,存在在每一块的开始的换行字符id数据。

这在警告实际上是显而易见的。

我会避免"完全和使用法线的结局,但快速修复是:
LINES TERMINATED BY '"\n'

dob

出生签发日期是有点不同,我不知道这一点,但我会考虑存储日期在CSV文件中的标准格式,因为他们是比较模糊的现在。

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

MySQL可能被解释两年的日期681968 (我会)而且,虽然在DATE列支持这一年(和所有其他年份可以追溯到1000 !) ,它可以根据你的弱输入进行选择以更严格的限制格式。

DATE类型用于与日期部分,但没有时间部分的值。 MySQL的检索和显示DATE中值'YYYY-MM-DD'格式。 支持范围为'1000-01-01''9999-12-31'



文章来源: Warnings on 'LOAD DATA INFILE' from .CSV - Integers and Dates