Формат дат в вашем файле не соответствует формату, ожидаемому MySQL. Кроме того, в этом столбце есть несколько значений без даты ('not BI'
). Решение состоит в том, чтобы предварительно обработать ваш ввод, чтобы преобразовать его в соответствующий формат.
LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/customer.csv'
INTO TABLE customers
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(customer_id, @BI_signup_date, email_address)
SET BI_signup_date = CASE
WHEN @BI_signup_date = 'not BI' THEN NULL
ELSE STR_TO_DATE(@BI_signup_date, '%m/%d/%Y')
END;
Это превратит значение 'not BI'
в NULL
(поскольку очевидно, что это не может быть преобразовано в дату), и преобразует другиезначения в формате даты MySQL. Возможны и другие стратегии, например, проверка формата значения по регулярному выражению. При необходимости вы можете изменить логику.
Ссылка: Предварительная обработка ввода в MySQL LOAD DATA
синтаксис :
Каждое значение col_name_or_user_var
является либо именем столбцаили пользовательская переменная. С пользовательскими переменными предложение SET
позволяет выполнять преобразования для предварительной обработки их значений перед назначением результата столбцам.