我的任务是将 .txt 文件读入 mySQL 表。 这就是我所做的。
CREATE TABLE PERSON(PIDM INT, FNAME VARCHAR(20), LNAME VARCHAR(20), SSN INT(8), DOB DATE, GENDER CHAR(2));
LOAD DATA LOCAL INFILE '/pathtoTextFile'
INTO TABLE PERSON
FIELDS TERMINATED BY ', '
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(PIDM, FNAME, LNAME, SSN, @DATE, GENDER)
SET DOB = STR_TO_DATE(@DATE, '%m-%d-%Y');
但是我这样做时收到了一些警告。 包括:
+---------+------+-----------------------------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------------------------+
| Warning | 1411 | Incorrect datetime value: '12/14/1957' for function str_to_date |
| Warning | 1411 | Incorrect datetime value: '01/13/1969' for function str_to_date |
| Warning | 1264 | Out of range value for column 'SSN' at row 3 |
| Warning | 1411 | Incorrect datetime value: '02/14/1976' for function str_to_date |
| Warning | 1366 | Incorrect integer value: '' for column 'SSN' at row 4 |
| Warning | 1411 | Incorrect datetime value: '03/12/1989' for function str_to_date
我无法弄清楚为什么我从 str_to_date 函数/方法中得到无效日期。 这应该是一个学习练习,但我已经做了大约两个小时,但没有取得任何进展。有谁有任何提示或知道我做错了什么?
谢谢
附注目的不是更改 .txt 文件以使其正常工作,而是能够处理不正确的输入。
最佳答案
这取决于源数据,但如果存在 MM/DD/YYYY 和 MM-DD-YYYY 的混合,您可以将不需要的分隔符替换为所需的分隔符,然后转换为日期。
注意:由于“Month First”和“Day First”格式“不明确”(例如 7/8/2014 可能是 7 月或 8 月的日期),因此应尽可能避免使用它们。
关于使用 str_to_date 从 .txt 文件读取日期类型时出现 mysql 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25965773/