You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL一次性将日期列导入varchar和date两个字段?

解决MySQL LOAD DATA一次性导入日期到双列的问题

我每周通过MySQL Workbench从CSV文件导入销售数据,其中一列日期格式为1/5/2023。我希望将该日期同时导入两个列:

  • 列名为Date(varchar类型),需保留原格式1/5/2023;
  • 列名为sql_date(date类型),需转换为2023-01-05格式。

请问如何无需后续执行UPDATE/SET/WHERE语句,一次性完成干净导入?

我尝试了以下代码,但结果为空,是否可以通过这种方式实现?

LOAD DATA LOCAL INFILE 'C:/Users/Lachelle Kazda/Desktop/Date Import Test.csv'

INTO TABLE sales_table
    
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS

(@Date, sales_amt, sales_qty)
SET sql_date = STR_TO_Date(@Date,'%c/%e/%Y')
AND @Date = Date

注:原表列结构为(Date, sales_amt, sales_qty, sql_date)


你的代码问题出在SET子句的语法上:用AND连接两个赋值操作是错误的,MySQL的SET子句中多个字段赋值需要用逗号分隔。修正后即可实现一次性导入需求,无需后续更新:

LOAD DATA LOCAL INFILE 'C:/Users/Lachelle Kazda/Desktop/Date Import Test.csv'
INTO TABLE sales_table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS
(@Date, sales_amt, sales_qty)
SET Date = @Date,
    sql_date = STR_TO_DATE(@Date, '%c/%e/%Y');

关键说明:

  1. 变量接收与赋值:用用户变量@Date接收CSV中的原始日期值,直接赋值给varchar类型的Date列,保留原格式。
  2. 日期转换:通过STR_TO_DATE(@Date, '%c/%e/%Y')将原始日期转换为MySQL标准date格式,其中:
    • %c:不带前导零的月份(如1、12)
    • %e:不带前导零的日期(如5、28)
    • %Y:四位年份(如2023)
  3. 语法修正:SET子句中用逗号分隔两个字段的赋值操作,替换原代码中的AND即可解决导入为空的问题。

另外需确保MySQL Workbench已开启本地文件导入权限(可在连接配置的“Advanced”选项中设置local-infile=1)。

内容的提问来源于stack exchange,提问作者LaChelle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 17:17:18