【问题标题】:Import csv mysql with multiple custom date formats导入具有多种自定义日期格式的 csv mysql
【发布时间】:2015-01-15 01:33:07
【问题描述】:

我必须以有趣的日期格式将 csv 导入 mysql 数据库,因此我决定使用 STR_TO_Date() 对其进行转换,但是当我尝试对日期进行多次转换时,它会在第二次转换时出现错误。

LOAD DATA LOCAL INFILE 'e:/the.csv' INTO TABLE data FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 ROWS (ID, UID, Barcode, Name, @Start, @End, Seconds) SET Start = STR_TO_DATE(@Start, '%d/%c/%Y %H:%i') SET End = STR_TO_DATE(@End, '%d/%c/%Y %H:%i')

我的数据库看起来是这样的:

ID  UID     Barcode Name        Start               End                 Seconds
29  12345   BBB6168 namehere    09/12/2014 18:00    09/12/2014 18:09    538
30  12345   AAA6168 namehere    10/12/2014 11:01    10/12/2014 11:02    4
31  AAAAA   ABC6084 namehere    10/12/2014 11:34    10/12/2014 11:34    5

我该如何解决这个问题?

【问题讨论】:

  • 我会将数据作为字符串 (varchar) 导入,并在导入后将其转换为所需的格式
  • 你能举个例子吗?非常感谢

标签: mysql date csv


【解决方案1】:

正如 Barranka 所提到的,最好将其导入到字符串 (varchar) 列的表中,然后在最终表中运行插入操作。

LOAD DATA LOCAL INFILE 'e:/the.csv'
INTO TABLE data_temp_strings
FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(ID, UID, Barcode, Name, StartStr, EndStr, Seconds);


INSERT INTO data (ID,UID,Barcode,Name,Start,End,Seconds)
SELECT  ID,
        UID,
        Barcode,
        Name,
        STR_TO_DATE(StartStr, '%d/%c/%Y %H:%i'),
        STR_TO_DATE(EndStr, '%d/%c/%Y %H:%i'),
        Seconds
FROM   data_temp_strings;

【讨论】:

    【解决方案2】:

    根据MySQL documentation for LOAD DATA INFILE,代码如下:

    LOAD DATA LOCAL INFILE 'e:/the.csv'
    INTO TABLE data
    FIELDS OPTIONALLY ENCLOSED BY '"' TERMINATED BY ','
    LINES TERMINATED BY '\n'
    IGNORE 1 ROWS
    (ID, UID, Barcode, Name, @Start, @End, Seconds)
    SET Start = STR_TO_DATE(@Start, '%d/%c/%Y %H:%i'),
        End = STR_TO_DATE(@End, '%d/%c/%Y %H:%i');
    

    奖金:MySQL STR_TO_DATE() format options

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多