2016-04-20 27 views
0

Ich bin readingdata aus einer Tabelle von Sybase ASE 15.5database und inserting dass data in ein anderes Ziel zurück Sybase ASE 15.5database. Alle source und destination Daten übereinstimmten statt timestamp Spalte.Wie kann man den Zeitstempel in Sybase ASE 15.5 wiederherstellen?

Als das, was ich weiß, über die timestamp Spalte ist, dass es automatisch aktualisiert:

Jedes Mal, wenn eine Zeile eine Timestamp-Spalte enthält, eingefügt oder aktualisiert wird, die Timestamp-Spalte wird automatisch aktualisiert. Eine Tabelle kann nur eine Spalte des Zeitstempeldatentyps enthalten. Eine Spalte namens timestamp hat automatisch den System-Datentyp timestamp.

Quelle: https://www.aquaclusters.com/app/home/project/public/aquadatastudio/wikibook/Sybase-ASE-3/page/4/Data-Types

Deshalb, wenn ich wieder herstellen, dass timestamp Daten zurück in der Zieldatenbank nicht mit dem eigentlichen einem paßt.

Hier ist der Bildschirm kurz Quelltabelle

enter image description here

Hier ist der Bildschirm kurz Zieltabelle

enter image description here

Wie den genauen Wert der Timestamp-Spalte wiederherzustellen?

FYI:

ich Apache Meta-model bin mit Daten aus der Quellentabelle abzufragen und diese Daten wieder in die Zieldatenbank wiederherstellen. 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.

Antwort

0

Sie können nicht. Eine Zeitstempelspalte wird immer aktualisiert. Dieser Wert, den diese Spalten enthalten, ist der 'Datenbank-Zeitstempel', der dem Transaktionsmechanismus in ASE zugrundeliegt und für jede eingefügte oder aktualisierte Zeile oder jede andere Änderung in der Datenbank inkrementiert wird. Der Name 'Zeitstempel' ist jedoch irreführend, da er absolut nichts mit der realen Zeit zu tun hat. Es ist nur ein 6-Byte-Zähler, der nur über die Lebensdauer der Datenbank erhöht wird.

Wenn Sie eine reale Zeit in diesen Spalten wünschen, verwenden Sie stattdessen den Datentyp 'datetime' oder 'bigdatetime'.

+0

Bulk Copy kann einen beliebigen gültigen Wert in eine Timestamp-Spalte einfügen. Die Massenkopie-API ist nicht in allen Programmierumgebungen verfügbar. in der Tat, in sehr wenigen, vielleicht nur mit nativen CT-lib Open Client in C. Die Alternative ist die Verwendung des bcp-Dienstprogramms. Dies könnte nur dann praktikabel sein, wenn es nur sehr selten in Batch-Prozessen ausgeführt wird, da die Verwendung von bcp das Erstellen einer Datei pro bcp-Ausführung erfordert. bcp sieht für eine Online-Bewerbung nicht geeignet aus. – Corral

Verwandte Themen