как восстановить значение `timestamp` в Sybase ASE 15.5?

Я reading data из одной таблицы Sybase ASE 15.5 database и inserting этой data обратно в другую цель Sybase ASE 15.5 database. Совпали все данные source и destination вместо столбца timestamp.

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

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

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

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

Вот скрин, сокращенный до исходной таблицы

введите здесь описание изображения

Вот скрин, сокращенный до таблицы назначения

введите здесь описание изображения

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

К вашему сведению:

Я использую 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.


person Ashish Pancholi    schedule 20.04.2016    source источник


Ответы (1)


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

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

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