我正在运行“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代码中工作?我可以设置一些参数使它工作吗?感谢您的帮助!!
1条答案
按热度按时间zphenhs41#
我解决这个问题的方法是在load data query的'set'部分使用mysql的substring函数(而不是'replace'):
这样就删除了后面的'-07:00'(实际上我也选择了删除时间,因为我不需要它,但是您也可以将它用作时间戳。