Чтобы восстановить значение метки времени в другой базе данных 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
Но я хочу, чтобы они восстанавливались как отметка времени с регионом часового пояса или смещением часового пояса (любого, кроме одного формата).
Мы не хотим терять и сохранять ошибочную дату в восстановленной таблице базы данных, нам нужно именно то, что было в исходной таблице.