【问题标题】:LOAD DATA LOCAL INFILE Manipulate Some Date ColumnsLOAD DATA LOCAL INFILE 操作一些日期列
【发布时间】:2019-06-28 21:06:06
【问题描述】:

我有一个包含 3 个日期列的 csv,但每个列的格式为 dd/mm/yyyy H:i:s 即 27/05/2019 20:25:00

我正在尝试使用 LOAD DATA INFILE 操作这些以插入但没有任何成功:

我的状态是这样的:

 LOAD DATA LOCAL INFILE '/file.csv' 
    INTO TABLE db_table FIELDS TERMINATED BY ',' 
    OPTIONALLY ENCLOSED BY '"' 
    LINES TERMINATED BY '\n' 
    IGNORE 1 LINES
    SET promotion_starts = str_to_date(@column7, '%d/%m/%Y %H:%i:%s'), 
    promotion_ends = str_to_date(@column8, '%d/%m/%Y %H:%i:%s'), 
    date_added = str_to_date(@column17, '%d/%m/%Y %H:%:%i:%s')

所有其他数据插入正常,但日期列全部为空

【问题讨论】:

  • @column7等在哪里设置?

标签: mysql csv


【解决方案1】:

您缺少指定 CSV 文件的字段如何与表列对应并定义 @column7@column8 的查询行。

 LOAD DATA LOCAL INFILE '/file.csv' 
    INTO TABLE db_table FIELDS TERMINATED BY ',' 
    OPTIONALLY ENCLOSED BY '"' 
    LINES TERMINATED BY '\n' 
    IGNORE 1 LINES
    (foo, bar, baz, xxx, yyy, zzz, @column7, @column8, aaa, bbb, ccc, ddd, eee, fff, ggg, hhh, @column17, iii, jjj)
    SET promotion_starts = str_to_date(@column7, '%d/%m/%Y %H:%i:%s'), 
    promotion_ends = str_to_date(@column8, '%d/%m/%Y %H:%i:%s'), 
    date_added = str_to_date(@column17, '%d/%m/%Y %H:%:%i:%s')

将我编写的所有列名替换为表中与 CSV 字段对应的实际列名。

【讨论】:

    猜你喜欢
    • 2012-10-05
    • 1970-01-01
    • 2014-11-08
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    相关资源
    最近更新 更多