2016-04-20 4 views
0

Je suis readingdata d'une table de Sybase ASE 15.5database et inserting qui data de nouveau dans une autre cible Sybase ASE 15.5database. Toutes les données source et destination correspondaient à la place de la colonne timestamp.comment restaurer la valeur `timestamp` dans Sybase ASE 15.5?

Comme ce que je sais à propos de la colonne timestamp est qu'il met à jour automatiquement:

Chaque fois qu'une ligne contenant une colonne d'horodatage est inséré ou mis à jour, la colonne d'horodatage est mis à jour automatiquement. Une table peut avoir seulement une colonne du type de données d'horodatage. Une colonne nommée timestamp aura automatiquement l'horodatage du type de données système.

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

Par conséquent, quand je suis timestamp que les données restaure de nouveau dans la base de données cible, il ne correspond pas à celle réelle.

Voici l'écran court au tableau Source

enter image description here

Voici l'écran court à destination Tableau

enter image description here

Comment restaurer la valeur exacte de la colonne d'horodatage?

Pour votre information:

J'utilise Apache Meta-model pour interroger les données de la table source et restaurer les données de nouveau dans la base de données cible. 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.

Répondre

0

Vous ne pouvez pas. Une colonne d'horodatage sera toujours mise à jour. cette valeur que ces colonnes contiennent est l'horodatage de base de données, qui est à la base du mécanisme de transaction dans ASE, et est incrémenté pour chaque ligne insérée ou mise à jour ou tout autre changement dans la base de données. Le nom 'timestamp' est trompeur, car il n'a absolument rien à voir avec l'heure réelle. C'est juste un compteur de 6 octets qui augmentera seulement au cours de la vie de la base de données.

Si vous voulez une heure réelle dans ces colonnes, utilisez à la place le type de données 'datetime' ou 'bigdatetime'.

+0

La copie en bloc peut insérer n'importe quelle valeur valide dans une colonne d'horodatage. L'API de copie en bloc n'est pas disponible dans tous les environnements de programmation. en fait, dans très peu, peut-être seulement avec CT-lib Open Client natif en C. L'alternative est d'utiliser l'utilitaire bcp. Cela ne peut être réalisable que lorsque cela est fait très peu de fois dans les processus par lots, car l'utilisation de bcp nécessite la création d'un fichier par exécution bcp. bcp ne semble pas adapté à une application en ligne. – Corral