繁体   English   中英

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

[英]Format a csv date column using mysql load data in file

我在文件查询中使用加载数据将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”,“ mdY”,“ m / d / y”,“ mdy”,“ Ymd”,“ Y / m / d”。

因此我的查询应该根据csv中的日期格式进行,以便我可以像这样修改查询,

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

要么

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

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

您需要使用一个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
    )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM