【发布时间】:2021-04-16 00:50:07
【问题描述】:
我知道之前已经发布过类似的问题,但是当我尝试按照 cmets 中的建议遵循类似的方法时,它根本没有帮助。我的查询如下:
LOAD DATA INFILE 'File.txt'
IGNORE
INTO TABLE table_name
FIELDS TERMINATED BY '^~'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS
(RUN_DATE, PROC_DT, STL_DT, TRD_DT)
SET RUN_DATE = STR_TO_DATE(RUN_DATE, '%d-%b-%y');
文件中的记录如下所示:
RUN_DATE^~PROC_DT^~STL_DT^~TRD_DT
21-DEC-20^~23-DEC-20^~23-DEC-20^~21-DEC-20
加载的日期全部填充为'0000-00-00 00:00:00',我知道这是出现数据类型错误并使用IGNORE 时的默认值。从我在网上找到的内容来看,这个问题与文件内日期不是 yyyy-mm-dd 格式有关,这是 mySQL 的默认格式,但 STR_TO_DATE 函数中的 '%d-%b-%y' 应该有助于缓解这个问题,因为
%d:以数值形式表示的月份中的某天(01 到 31)-
%b:缩写月份名称(1 月到 12 月)-
%y:年份,两位数
为什么这没有帮助?我还尝试使用LOWER() 将月份设为小写,我认为缩写月份可能需要全部小写,但这会产生相同的结果。我在这里错过了什么?
【问题讨论】:
标签: mysql date-formatting load-data-infile str-to-date