База данных H2 - CSVREAD - чтение метки времени из csv в столбец метки времени - PullRequest
1 голос
/ 06 января 2012

Я использую H2 DB в своем приложении Java.Я хочу загрузить файл .csv в таблицу.Мой файл .csv содержит метку времени в формате 07/16/2011 02:43:43, но формат метки времени по умолчанию для H2 DB: 2005-12-31 23:59:59

, поэтому, когда я использую CSVREAD для загрузки этого файла .csv в БД, яполучить следующее исключение:

org.h2.jdbc.JdbcSQLException: Cannot parse "TIMESTAMP" constant "07/16/2011 02:43:43"; SQL statement:
-- row #2 ('CIRCLE', 'MSISDN', 'PORT_IN_DATE', 'OPERATOR', 'PRODUCT_TYPE', 'PORT_ID') [22007-163]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
at org.h2.message.DbException.get(DbException.java:158)
at org.h2.value.ValueTimestamp.parse(ValueTimestamp.java:87)
at org.h2.value.Value.convertTo(Value.java:819)
at org.h2.table.Column.convert(Column.java:155)
at org.h2.command.dml.Insert.addRow(Insert.java:153)
at org.h2.command.dml.Select.queryFlat(Select.java:524)

1 Ответ

1 голос
/ 06 января 2012
select convert(parseDateTime(DOB,'yyyy/MM/dd hh:mm:ss'),timestamp) as NEWNAME
from CSVREAD('file.csv')

, где file.csv имеет столбец с меткой DOB

И для вставки в вашу таблицу:

insert into YOURTABLE 
    (
     select convert(parseDateTime(DOB,'yyyy/MM/dd hh:mm:ss'), timestamp)
     from CSVREAD('file.csv')
    )
...