如何解决日期导入不正确
我知道之前已经发布过类似的问题,但是当我根据评论中的建议尝试遵循类似的方法时,它根本无济于事。我的查询如下:
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 的默认格式,但 '%d-%b-%y'
函数中的 STR_TO_DATE
应该有帮助缓解这个问题,因为
%d:作为数值的月份中的第几天(01 到 31)-
%b:缩写月份名称(一月到十二月)-
%y:作为数字的 2 位数字值的年份
为什么这没有帮助?我还尝试使用 LOWER()
使月份小写,认为缩写的月份可能需要全部小写,但这会产生相同的结果。我在这里错过了什么?
解决方法
要从文件中读取但存储修改后的值,您需要使用变量:
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'),PROC_DT = STR_TO_DATE(@PROC_DT,STL_DT = STR_TO_DATE(@STL_DT,TRD_DT = STR_TO_DATE(@TRD_DT,'%d-%b-%y');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。