Мне была дана задача чтения в TXT-файле в таблицу mySQL. Вот что я сделал.Проблема mysql при чтении в формате Date из файла .txt с str_to_date
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/метода. Это должно быть учебное упражнение, но я был на нем как 2 часа и нигде не получил. У кого-нибудь есть какие-либо советы или какое-либо представление о том, что я делаю неправильно?
Спасибо
P.S. Цель состоит не в том, чтобы изменить файл .txt, чтобы он работал, но чтобы иметь возможность обрабатывать неверные входы.
Вы считали символы между месяцем года? вы указали тире, но ошибки показывают слэш –
Забавно, что я был уверен, что попытался переключить их на '/', но, видимо, я этого не сделал, и когда я вернулся, это сработало. Благодарю. Вот еще один вопрос: как указать значение NULL, если SSN не 8 мест? –
'case when length (ssn) <> 8 then NULL else SSN end'; но вы должны указать, что на этот вопрос ответили, отметив ответ ниже –