2013-10-12 45 views
0

我有一個需要使用CSVREAD導入的csv文件。問題是它有不同的日期時間格式,所以需要解析它。可以給我一個我應該如何做的例子嗎?H2解析CSV文件的時間

我嘗試:合併到MESSAGE(MESG_DATE_FROM,MESG_DATE_TO,MESG_DISPLAY_SEQ,MESG_TIME_DELAY,MESG_ID,REASONTYPE_MAJOR)SELECT * FROM CSVREAD( 'MESSAGE_0.csv');

這個querys是編程方式,所以他們不能手工製作。問題是有些列是日期時間類型,並且與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中是否有類似的情況?

+0

你試過了什麼? –

+0

我用更多的信息更新了我的問題。 – user1249212

+0

如果您不知道哪些列是datetime,那麼您是如何創建表的?你是否爲每一列使用varchar? –

回答

1

我認爲你想要的是不可能的。在H2中無法更改「全局」時間戳格式(就像您在DB2中所做的那樣)。

我認爲你要麼需要

  • 構建使用PARSEDATETIME在適當情況下,或
  • 修改CSV文件,使用相同的時間戳格式爲H2基於列類型的每一列的查詢,使用,這是JDBC specification, under SQL escape sequence中定義的格式:yyyy-mm-dd hh:mm:ss[.f...]
  • 爲H2提供補丁以支持「全局」時間戳記格式。