我正在运行"LOAD DATA FROM S3"命令,以将CSV文件从S3加载到Aurora MySQL。如果在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代码中工作?我可以设置一些参数使其工作吗?任何帮助表示赞赏!
答案 0 :(得分:0)
我解决问题的方法是在LOAD DATA查询的“ SET”部分(而不是“ replace”)中使用mysql的SUBSTRING函数:
SUBSTRING(@myDate, 1, 10)
通过这种方式删除了结尾的“ -07:00”(我实际上也选择删除时间,因为我不需要它,但是您也可以将其用于TIMESTAMPS。