亲爱的,我正在开发一个能够将历史市场数据从文件加载到 MySQL 表的 Java 脚本,其中每个数据记录都包含“日期”和“时间戳”字段。通常的记录表示为:
01/11/2010,10:00:00.007,P,210.8,210.86,6,2,R,,2486662,P,P,,0,,N 01/11/2010,10:00:00.577,W, 210.51,211.61,1,1,R,,2487172,W,W,,0,,N
其中第一列代表“日期”,第二列代表“时间戳”(以毫秒为粒度)。由于 MySQL 不支持毫秒粒度,因此我使用“时间戳”字段的 BIGINT(长)表示。
目前负载查询如下:
LOAD DATA LOCAL INFILE 'path to file'
INTO TABLE table
FIELDS TERMINATED BY ','
(@date, @time, remaining columns ...)
SET date=STR_TO_DATE(@date, '%m/%d/%Y'),
SET time=UNIX_TIMESTAMP( STR_TO_DATE(@time, '%H:%i:%S.%f') )
除了最后一行(抛出 SQLExceptions)之外,查询工作正常。我尝试了不同的格式模式,但在转换为 unix 时间戳之前,在计算从字符串到时间戳的转换时遇到了问题。谷歌也没有帮助。如果有人能提出合理的解决方案,我将不胜感激。不幸的是,将 MySQL 更改为其他数据库不是一种选择。
问候,