由于时间戳,从 S3 命令加载数据失败
LOAD DATA FROM S3 command failing because of timestamp
我正在 运行使用 "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 workbench 中起作用而不在我的 java 代码中起作用?我可以设置一些参数使其工作吗?感谢您的帮助!!
我解决它的方法是在 LOAD DATA 查询的 'SET' 部分使用 mysql 的 SUBSTRING 函数(而不是 'replace'):
SUBSTRING(@myDate, 1, 10)
这样删除了尾随的“-07:00”(实际上我也选择删除时间,因为我不需要它,但您也可以将它用于 TIMESTAMPS。
我正在 运行使用 "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 workbench 中起作用而不在我的 java 代码中起作用?我可以设置一些参数使其工作吗?感谢您的帮助!!
我解决它的方法是在 LOAD DATA 查询的 'SET' 部分使用 mysql 的 SUBSTRING 函数(而不是 'replace'):
SUBSTRING(@myDate, 1, 10)
这样删除了尾随的“-07:00”(实际上我也选择删除时间,因为我不需要它,但您也可以将它用于 TIMESTAMPS。