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

标签 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')

或者

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
    )

关于mysql - 使用文件中的 mysql 加载数据格式化 csv 日期列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19271955/

相关文章:

c# - 将 csv 加载到 oleDB 中并将所有推断的数据类型强制为字符串

允许 -/或 .作为日期内的分隔符

iOS - 友好的 NSDate 格式

java - 为什么格式化日期是上个世纪

python - 访问 csv 标题空白且不区分大小写

python - 从字符串中读取数据,区分元素是数字还是数组

Python 脚本返回旧的 MySQL 值(直到重新启动)

mysql - 大型数据库中的数据交换

mysql - 删除记录后如何删除文件?

mysql - 玛丽亚数据库/MySQL。查找分组中具有最大值和最小值的行字段