使用文件中的mysql加载数据格式化csv日期列

时间:2013-10-09 12:24:57

标签: mysql csv date-format date-formatting

我在文件查询中使用加载数据将csv插入表中。我必须格式化csv中的日期列,

LOAD DATA INFILE '/invoices/invoice1381301986.csv' INTO TABLE invoice_table FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' (`code`,@var1)  set datefield=STR_TO_DATE(@var1, '%m/%d/%Y');

我可以使用上述查询格式化日期。

但问题是,我对csv日期列有不同的格式。可能的格式是“m / d / Y”,“m-d-Y”,“m / d / y”,“m-d-y”,“Y-m-d”,“Y / m / d”。

所以我的查询应该是根据csv的日期格式,这样我就可以修改我的查询了,

datefield=STR_TO_DATE(@var1, '%m/%d/%Y')

OR

datefield=STR_TO_DATE(@var1, '%m-%d-%Y') ..

如何阅读csv日期字段的格式?

1 个答案:

答案 0 :(得分:3)

您需要使用CASE

LOAD DATA INFILE '/invoices/invoice1381301986.csv' 
    INTO TABLE invoice_table 
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"' 
    LINES TERMINATED BY '\n' 
    (`code`,@var1)  
    SET datefield= (
        CASE
            WHEN @var1 REGEXP '[0-9]{2}/[0-9]{2}/[0-9]{4}' THEN STR_TO_DATE(@var1,'%m/%d/%Y')
            ...
        END
    )