从s3命令加载数据失败,原因是时间戳

1u4esq0p  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(315)

我正在运行“loaddatafroms3”命令将csv文件从s3加载到auroramysql。如果在mysql workbench中运行该命令,它可以正常工作(虽然它会以警告的形式向我提供以下异常,但仍然可以插入日期),但是当我在java中运行该命令时,会出现以下异常:

com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: 
Data truncation: Incorrect datetime value: '2018-05-16T00:31:14-07:00'

有解决办法吗?我是否需要在mysql端或我的应用程序中设置一些东西来实现无缝转换?我应该对时间戳运行replace()命令吗?
更新1:
当我使用replace从原始时间戳(2018-05-16t00:31:14-07:00)中删除“-07:00”时,它会适当地加载数据。这是我的负载声明:

LOAD DATA FROM S3 's3://bucket/object.csv'  
REPLACE  
INTO TABLE sample  
FIELDS TERMINATED BY '\t'  
LINES TERMINATED BY '\n'  
IGNORE 1 LINES 
(@myDate) 
SET `created-date` = replace(@myDate, '-07:00', ' ');

显然,这不是一个好的解决办法。为什么load语句在mysql工作台上工作,而不是在java代码中工作?我可以设置一些参数使它工作吗?感谢您的帮助!!

zphenhs4

zphenhs41#

我解决这个问题的方法是在load data query的'set'部分使用mysql的substring函数(而不是'replace'):

SUBSTRING(@myDate, 1, 10)

这样就删除了后面的'-07:00'(实际上我也选择了删除时间,因为我不需要它,但是您也可以将它用作时间戳。

相关问题