H2解析CSV文件的时间

时间:2013-10-12 18:23:20

标签: database h2

我有一个需要使用CSVREAD导入的csv文件。问题在于它以不同的方式具有日期时间格式,因此需要解析它。可以给我一个例子来说明我应该如何做到这一点吗?

我试过:合并到MESSAGE(MESG_DATE_FROM,MESG_DATE_TO,MESG_DISPLAY_SEQ,MESG_TIME_DELAY,MESG_ID,REASONTYPE_MAJOR)SELECT * FROM CSVREAD('MESSAGE_0.csv');

这些查询是以编程方式编写的,因此它们不能手工制作。问题是某些列是日期时间类型,并且与H2中的日期时间格式不同,在解析时我没有确切的方法来确定哪些列将是datetime,因此我无法轻松地放置PARSEDATETIME和CSV文件不包含任何列名称或信息,只包含值。像这样: 2011-11-18 00.00.00.00,2030-12-31 00.00.00.00,1,20000,1,0, ...
...

将生成一个Sql文件以将此CSV加载到每个表中,但似乎我需要知道列是否为TIMESTAMP类型以添加​​PARSEDATETIME(MESG_DATE_FROM,'yyyy-mm-dd hh.mm.ss.uu' )作为MESG_DATE_FROM到sql。

在DB2中,我们可以在合并查询中使用timestampformat = YYYY-MM-DD HH.MM.SS.UU,因此这是以表的默认方式完成的。 H2中有这么相似吗?

1 个答案:

答案 0 :(得分:2)

我认为你想要的是不可能的。无法在H2中更改“全局”时间戳格式(正如您在DB2中所做的那样)。

我认为你需要

  • 根据每列的列类型构建查询,在适当的情况下使用PARSEDATETIME
  • 修改CSV文件以使用与H2使用的时间戳格式相同的时间戳格式,这是JDBC specification, under SQL escape sequence中定义的格式:yyyy-mm-dd hh:mm:ss[.f...]
  • 为H2提供补丁以支持“全局”时间戳格式。
相关问题