MySQL如何将CSV日期从'mm/dd/yyyy'直接上传到DATE数据类型格式

zfycwa2u  于 2023-05-05  发布在  Mysql
关注(0)|答案(2)|浏览(179)

我将每天的销售数据上传到MySQL(Workbench)(AWS)。现在,我们上传常规日期(如5/10/2023)的方法是将包含日期的ANY AND ALL列保留为VARCHAR数据类型。因此,我不能使用任何日期关键字/范围,我们已经有了一些错别字,不得不手动更正。
我想把我们所有的表都改成DATE数据类型,我的老板是一个纯粹主义者,他想把日期直接加载到MySQL的日期中,比如5/10/2023格式,直接转换成2023-05-10。这似乎是一项简单的任务,但我在几次测试后仍然无法解决,主要涉及STR_TO_DATE和DATE_FORMAT函数。我觉得我已经接近了,但在语法上有一点不对

CSV输入文件显示为date_col = 5/10/2023

LOAD DATA LOCAL INFILE 'C:/Users/LK/Desktop/Date Import Test.csv'
INTO TABLE Test_Table
    
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS

(date_col, blah_col1, blah_col2)
SET date_col = STR_TO_DATE(date_col,'%m/%d/%Y');

在最后一行,我也尝试了这种变化:

SET ld_new = DATE_FORMAT(STR_TO_DATE(ld_new, '%m/%d/%Y'), '%Y-%m-%d')

所有内容最终上传为NULL或0000-00-00。
我希望结果是2023-05-10,MySQL将其识别为正确的日期数据类型。

k2arahey

k2arahey1#

必须在列列表中使用用户变量。

(@date_col, blah_col1, blah_col2)
SET date_col = STR_TO_DATE(@date_col,'%m/%d/%Y')
gwbalxhn

gwbalxhn2#

**注意:**在开始应用以下内容之前,请创建表格备份,并验证所有日期值的格式是否一致。下面是如何做的链接:backup

1.首先,需要修改现有表,将包含日期值的VARCHAR列更改为DATE数据类型。你可以使用ALTER TABLE语句来实现:

ALTER TABLE your_table_name
MODIFY date_col DATE;

1.现在,您可以更改LOAD DATA LOCAL INFILE查询以导入CSV文件:

LOAD DATA LOCAL INFILE 'C:/Users/LK/Desktop/Date Import Test.csv'
INTO TABLE Test_Table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS
(@date_col, blah_col1, blah_col2)
SET date_col = STR_TO_DATE(@date_col, '%m/%d/%Y');

此查询从CSV文件中读取数据,并将列Map到目标表。@date_col变量用于临时存储CSV文件中的日期值,然后使用格式为**%m/%d/%YSTR_TO_DATE()函数将其转换为正确的DATE数据类型。
转换后,日期值应该以正确的DATE数据类型存储在MySQL表中,默认情况下,MySQL以
YYYY-MM-DD**格式表示日期。

相关问题