【问题标题】:CSV date format to MySQL date formatCSV 日期格式转 MySQL 日期格式
【发布时间】:2017-12-17 17:51:52
【问题描述】:

当我尝试将 CSV 文件导入 MySQL 时,所有日期都变为 0000-00-00

CSV 日期格式为 DD/MM/YYYY,例如 2016 年 11 月 16 日。

MySQL 格式为:YYYY/MM/DD。我正在使用 phpmyadmin 来导入它。如何解决这个日期转移?

【问题讨论】:

    标签: mysql csv phpmyadmin


    【解决方案1】:

    DD/MM/YYYY 格式在 MySQL 中不是有效日期。您可以使用 LOAD DATASTR_TO_DATE 将日期字符串解析为 MySQL 可以识别的实际日期:

    LOAD DATA INFILE 'path/to/file.csv'
    INTO TABLE yourTable FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' 
    (
        col1, col2, @var1, col4
    )
    SET date_col = STR_TO_DATE(@var1, '%d/%m/%Y')
    

    以上假设您的表格有 4 列,并且您从 CSV 文件中读取的第三列是麻烦的日期。这里的诀窍是每个日期字符串都会被动态映射到有效的日期类型,从而为您提供所需的结果。

    【讨论】:

    • 感谢您的回复。我是新来的。您能告诉我在哪里可以使用此代码来执行我的 .csv 文件吗?在phpmyadmin里面?
    • 你可以直接从 MySQL 执行。
    • 我尝试了同样的方法,但为什么我得到Error Code: 1193. Unknown system variable 'DATE'
    【解决方案2】:

    我想,你需要在添加到MYSQL数据库之前更改日期格式。

    $old_date = date('dd/mm/yyyy');            
    $middle = strtotime($old_date);            
    $new_date = date('yyyy/mm/dd', $middle);   
    

    【讨论】:

    • 感谢您的回复。我是新来的。您能告诉我在哪里可以使用此代码来执行我的 .csv 文件吗?在phpmyadmin里面?
    【解决方案3】:

    另一种选择是将CSV Lint plug-in 用于记事本++。该插件可以检测 csv 文件中的数据类型,包括日期时间格式。您只需选择重新格式化即可将所有 DD/MM/YYYY 值更改为 YYYY/MM/DD 格式。

    或者,除了使用LOAD DATA INFILE,还有一个菜单选项可以将 csv 文件转换为 SQL 插入脚本。

    它将为 csv 文件中的每一行创建 INSERT 语句,批量为 1000 条记录。此外,它还考虑了列数据类型和日期时间格式,它会自动将日期值转换为正确的 SQL 日期时间。

    生成的 SQL 脚本还包含一个 CREATE TABLE 部分,其中每个列的数据类型都正确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-26
      • 2014-02-25
      • 2010-09-17
      • 2010-11-03
      • 1970-01-01
      • 2023-03-29
      • 2011-08-13
      • 2011-10-20
      相关资源
      最近更新 更多