我正在使用MySQL的LOAD DATA LOCAL INFILE SQL语句将数据从CSV文件加载到现有数据库表中。
这是一个示例SQL语句:
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE my_table FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' (name, address, dateOfBirth)
CSV中映射到dateOfBirth字段的第三列当前具有以下格式的日期:
14-Feb-10
如何修改上述SQL语句以将日期格式化为MySQL的日期格式,即2010-02-14?
2010-02-14
我知道在使用普通INSERT语法时如何转换字符串日期:
STR_TO_DATE('14-Feb-10', '%d-%b-%y')
您需要使用该SET子句以及一个变量来引用该列中行的内容。在列列表中,将日期列分配给变量名称。然后,您可以在SET语句中使用它。(请注意,我还没有MySQL可以对此进行测试。)
SET
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE my_table FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' (name, address, @var1) set dateOfBirth = STR_TO_DATE(@var1, '%d-%b-%y')
请参见以下页面中的示例:http : //mysql2.mirrors-r-us.net/doc/refman/5.1/en/load- data.html(不确定为什么该页面似乎与它实际上包含SET用法示例。)