MySQL 使用 LOCAL INFILE 导入数据时的日期问题

MySQL Date issue when import data using LOCAL INFILE

我有日期列的数据显示 5 个数字,例如 43390。

Excel 转换前的数据如下所示:

date
43390
43599

我在 excel 中将其转换为日期类型并使用本地 infile 将其导入到 MySQL Workbench.

Excel 转换后的数据: |日期| |:---- |2018/10/17| |2019/05/14|

但是,我在 MySQL 上遇到了多个问题,希望得到您的帮助。

首先,当我在 MySQL 上创建一个 table 时,如下所示:

CREATE TABLE df
(
dates DATE,
store_num INT,
loyalty_card_num INT,
txin_id INT,
prod_num INT,
product_name VARCHAR(250),
product_qty INT,
total_sales FLOAT
);

然后使用下面的代码导入:

LOAD DATA LOCAL INFILE 'file_location/data.csv' 
INTO TABLE df
FIELDS TERMINATED BY ',' 
ENCLOSED BY "'" 
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(dates, store_num, loyalty_card_num, txin_id, prod_num, product_name, product_qty, total_sales);

我的日期栏显示的是 0000-00-00。

如果我将日期列类型更改为 VARCHAR(20) 或 INT,它只会显示年份,例如 2018。

我也试过使用

(@dates, store_num, loyalty_card_num, txin_id, prod_num, product_name, product_qty, total_sales);
set dates = date_format(@dates, "%Y-%m-%d)

但返回空值。

我只是想让它显示正确的日期格式,如 2018-01-01,但真的很难得到结果。

感谢您的帮助,如果我解释不清楚,请告诉我。

您可以在此处调用 STR_TO_DATE 并将输入文件中的文本字符串转换为正确的日期,作为加载数据过程的一部分:

LOAD DATA LOCAL INFILE 'file_location/data.csv' 
INTO TABLE df
FIELDS TERMINATED BY ',' 
ENCLOSED BY "'" 
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(@var1, store_num, loyalty_card_num, txin_id, prod_num, product_name, product_qty, total_sales)
SET dates = STR_TO_DATE(@var1, '%Y/%m/%d');