由于时间戳

时间:2018-07-19 19:44:42

标签: mysql mysql-workbench mysql-connector amazon-rds-aurora

我正在运行"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代码中工作?我可以设置一些参数使其工作吗?任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

我解决问题的方法是在LOAD DATA查询的“ SET”部分(而不是“ replace”)中使用mysql的SUBSTRING函数:

SUBSTRING(@myDate, 1, 10)

通过这种方式删除了结尾的“ -07:00”(我实际上也选择删除时间,因为我不需要它,但是您也可以将其用于TIMESTAMPS。