【问题标题】:Mysql, date column has empty values after loading from a csv fileMysql,从csv文件加载后日期列有空值
【发布时间】:2023-03-15 03:16:01
【问题描述】:

我正在加载一个 csv 文件,

我想创建一个从日期列中提取月份和年份的列。截至 2015 年 1 月

我的 csv 文件的日期存储为 dd/mm/yyyy ,

在加载 csv 时,我将数据类型设置为日期,现在该列有空值 '0000-00-00'

有什么理由吗?

或者我可以在创建表格时更改日期格式

create table tblname
(Date DATE
id int
region varchar(45));

【问题讨论】:

  • MySQL 希望日期格式为YYYY-MM-DD。如果您的日期格式不同,则需要使用STR_TO_DATE() 进行解析。

标签: mysql sql date sqldatatypes


【解决方案1】:

使用预处理。

LOAD DATA INFILE `filename`
INTO TABLE tablename
{ options }
(@date, id, region)
SET `Date` = STR_TO_DATE(@date, '%d/%m/%Y');

【讨论】:

  • 你不需要转义正斜杠。
  • @Barmar 是的,我猜……但习惯更强。
  • 我仍然保持数据类型为日期?
  • 将本地数据文件“V://Chai//sales_data_dump.csv”加载到表中sales 由 ' 终止的字段,' 由 ' 封闭 ' ' 由 '\\' 转义的行 ' \n' IGNORE 1 LINES SET Date = STR_TO_DATE(@date, '%d/%m/%Y'); 这是我的代码,仍然显示 0000-00-00
  • @Chai 在您的表格中临时添加一列date_txt TEXT。将date_txt = @date 添加到 SET 子句中。然后查找原始值 - 是否正确导入,并尝试将 STR_TO_DATE 应用于导入的原始值 - 是否正确转换?
猜你喜欢
  • 1970-01-01
  • 2015-10-07
  • 2013-03-13
  • 1970-01-01
  • 2018-06-22
  • 1970-01-01
  • 2020-02-22
  • 2010-12-27
  • 1970-01-01
相关资源
最近更新 更多