Чтобы восстановить значение метки времени в другой базе данных Oracle

Мы работаем над весенней загрузкой гибернации, которая работает с базами данных. Мы резервируем таблицы базы данных в формате csv. При резервном копировании таблицы Oracle 11g, содержащей столбцы TIMESTAMP WITH TIME ZONE, мы сталкиваемся с проблемами, так как этот тип может иметь два типа в своих значениях:

  • Смещение часового пояса -> 2003-01-01 02:00:00.0 -7:00
  • Название региона часового пояса -> 2000-02-29 03:32:22.016 America/Yellowknife

Мы используем метамодель apache для анализа CSV для восстановления в другую таблицу базы данных Oracle.

Экспортированный столбец отметок времени в CSV:

"Col_TimeStampTimeZone" 
"2016-04-07 08:42:20.828 Asia/Calcutta" 
"2003-01-01 02:00:00.0 -7:00"

Мы перепробовали много способов преобразования, используя SimpleDateFormat, Date, Calendar, но мы не можем восстановить точно так, как они сохранены в исходной таблице базы данных.

Мы попробовали решение, приведенное здесь: конвертировать `Java.lang.String` в`oracle.sql.TIMESTAMPTZ`

Этот код прекрасно работает на ОС Windows. Преобразование в соответствии с местным часовым поясом в формате региона часового пояса. Но тот же код не работает на ОС Ubuntu. Это преобразование значения в UTC как:

07-APR-16 03.12.20.828000000 AM UTC
01-JAN-03 09.00.00.000000000 AM UTC

Но я хочу, чтобы они восстанавливались как отметка времени с регионом часового пояса или смещением часового пояса (любого, кроме одного формата).

Мы не хотим терять и сохранять ошибочную дату в восстановленной таблице базы данных, нам нужно именно то, что было в исходной таблице.

0 ответов

Другие вопросы по тегам