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');
我有日期列的数据显示 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');