Cam*_*oft 17 mysql sql datetime load-data-infile
我正在使用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)
Run Code Online (Sandbox Code Playgroud)
CSV中映射到dateOfBirth字段的第三列当前具有以下格式的日期:
14-Feb-10
Run Code Online (Sandbox Code Playgroud)
如何修改上面的SQL语句以将日期格式化为MySQL的日期格式,即2010-02-14
?
我知道如何使用常规INSERT语法转换字符串日期:
STR_TO_DATE('14-Feb-10', '%d-%b-%y')
Ali*_* R. 25
您需要使用该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')
Run Code Online (Sandbox Code Playgroud)
请参阅以下页面中的示例:http://mysql2.mirrors-r-us.net/doc/refman/5.1/en/load-data.html(不确定为什么此页面似乎与主要文档不同它实际上包含一个SET
使用示例.)
一个稍微冗长的过程,为您提供一些测试灵活性:
像这样运行查询
更新mytable SET mydate = STR_TO_DATE(mydate_text,'%Y-%b-%d')
如果一切正常,请删除mydate_text列
这种技术的优点是它可以让你使用格式,而不必使用有点繁琐的MySQL LOAD DATA语法重新导入表,特别是长度表列.如果您确切知道自己在做什么,那么上面的答案是最好的.如果您不是MySQL的专家,这种技术可能会有所帮助,直到您的格式完全正确.
归档时间: |
|
查看次数: |
42322 次 |
最近记录: |