一尘不染

如何使用MySQL的LOAD DATA LOCAL INFILE在导入CSV时将字符串日期更改为MySQL日期格式

mysql

我正在使用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

我知道在使用普通INSERT语法时如何转换字符串日期:

STR_TO_DATE('14-Feb-10', '%d-%b-%y')


阅读 596

收藏
2020-05-17

共1个答案

一尘不染

您需要使用该SET子句以及一个变量来引用该列中行的内容。在列列表中,将日期列分配给变量名称。然后,您可以在SET语句中使用它。(请注意,我还没有MySQL可以对此进行测试。)

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用法示例。)

2020-05-17