2016-04-20 8 views
0

Я readingdata из одной таблицы Sybase ASE 15.5database и inserting что data обратно в другую цель Sybase ASE 15.5database. Все source и destination данные сопоставлены вместо timestamp.Как восстановить значение timestamp в Sybase ASE 15.5?

Как то, что я знаю о timestamp колонке является то, что она автоматически обновляется:

Каждый раз, когда строка, содержащая столбец временной метки вставлена ​​или модифицируется, столбец временной метки автоматически обновляется. Таблица может содержать только один столбец типа данных метки времени. Столбец с именем timestamp будет автоматически иметь временную метку типа данных системы.

Источник: https://www.aquaclusters.com/app/home/project/public/aquadatastudio/wikibook/Sybase-ASE-3/page/4/Data-Types

Поэтому, когда я восстановить данные, которые timestamp обратно в целевую базу данных не совпадает с фактическим один.

Вот экран короткое замыкание на источник таблицы

enter image description here

Вот экран короткое назначения Таблица

enter image description here

Как восстановить точное значение столбца временной отметки?

FYI:

Я использую Apache Meta-model для запроса данных из исходной таблицы и восстановления данных обратно в целевую базу данных. As you can see timestamp is an array of bytes so I am extracting data as an array of bytes and restore it again as array of bytes but the value timestamp column is being changed when restore.

ответ

0

Вы не можете. Столбец временной отметки всегда будет обновляться; это значение, которое содержат эти столбцы, это «временная метка базы данных», которая лежит в основе механизма транзакции в ASE и увеличивается на каждые вставленной или обновленной строки или любых других изменений в базе данных. Имя «timestamp» вводит в заблуждение, поскольку оно не имеет абсолютно никакого отношения к реальному времени. Это всего лишь 6-байтовый счетчик, который будет увеличиваться только в течение всего срока службы базы данных.

Если вы хотите иметь реальное время в этих столбцах, вместо этого используйте тип данных 'datetime' или 'bigdatetime'.

+0

Массовая копия может вставить любое допустимое значение в столбце временной метки. API-интерфейс массового копирования недоступен во всех программных средах; на самом деле, в очень немногих, возможно, только с открытым CT-lib Open Client в C. Альтернативой является использование утилиты bcp. Это может быть осуществимо, только если сделано несколько раз в пакетных процессах, потому что для использования bcp требуется создание файла для выполнения bcp. bcp не подходит для онлайн-приложения. – Corral

 Смежные вопросы

  • Нет связанных вопросов^_^