|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juillet 2010 Messages : 23 ![]() |
Bonjour ,
J'aimerai transférer des données d'une table de "travail" vers une table identique "backup" sur base de temps . Une à 8H00,16H00,et 00H00. Quelqu'un pourrait il me mettre sur la bonne voie . Trigger ou autre ? Merci. |
|
|
00
|
|
|
#2 | ||
|
Membre du Club
![]() Inscription : octobre 2007 Messages : 160 ![]() |
Est ce que tu veux dire une tache planifié qui va alimenter dans des tranches horaires la table back up?
si c'est le cas tu peux crée un nouveau job et le faire exécuter en tant que tache planifié en exécutant la requête ou la procédure suivante: Code :
|
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juillet 2010 Messages : 23 ![]() |
J'ai créer un jobs à 8 12 et 00 HH .
J'aimerai par exemple prendre pour le job de 8H00 tout les records de la table travail dont l'horodatage est inférieur à 6H00 et les insérer dans la table backup sans avoir de doublons. |
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Beaucoup plus rapide serait de vider la table et de faire une capture binaire des données, puis réinjection.
1) TRUNCATE TABLE ... (base de destination) 2) export avec bcp.exe out en format natif de la table en question 3) import avec bcp.exe in du fichier créé en 2) bcp.exe est l'utilitaire en ligne de commande d'import / export de SQL Server. A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 523 ![]() |
Ça permettrait aussi de conserver les éventuelles indexes, stats et contraintes qu'un radical drop table.
__________________
les règles du forum - mode d'emploi du forum Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) JE NE RÉPONDS PAS aux questions techniques par message privé. Écrire en français sur un forum est une marque minimale de respect. |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : juillet 2010 Messages : 23 ![]() |
Je ne gère pas la table travail (je ne peux pas faire de suppression)
J'ai créer un jobs à 8 12 et 00 HH . J'aimerai par exemple prendre pour le job de 8H00 tout les records de la table travail dont l'horodatage est inférieur à 6H00 et les insérer dans la table backup sans avoir |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() |
Attention aux colonnes auto-incrément (IDENTITY) si elles existent !
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 523 ![]() |
Que veux-tu dire, je ne vois pas le problème ?
__________________
les règles du forum - mode d'emploi du forum Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) JE NE RÉPONDS PAS aux questions techniques par message privé. Écrire en français sur un forum est une marque minimale de respect. |
|
|
00
|
|
|
#9 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 674 ![]() |
Si la table d'archive contient elle aussi une table dont la colonne a la propriété de compteur auto-incrémenté, l'INSERT dans la d'archive ne marchera pas.
Deux solutions : - ne pas spécifier la colonne dans le SELECT, très simple - spécifier SET IDENTITY_INSERT maTable ON avant l'INSERT, puis SET IDENTITY_INSERT maTable OFF après l'INSERT, mais je trouve ça moche @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
00
|
|
|
#10 | |
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 523 ![]() |
Citation:
Mais comme il faisait un drop table puis un select * into ... la colonne dans la table de destination n'est plus auto-incrémentée dans ce cas. Mais bon, il vaut mieux être prudent, vous avez raison sur ce point.
__________________
les règles du forum - mode d'emploi du forum Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) JE NE RÉPONDS PAS aux questions techniques par message privé. Écrire en français sur un forum est une marque minimale de respect. |
|
|
|
00
|
|
|
#11 |
![]() ![]() Administrateur de base de données Inscription : août 2007 Messages : 1 159 ![]() |
Vous pouvez aussi penser à utiliser l'operateur switch.
Générez une partition vide a votre table de destination dans laquelle vous switchez votre table de travail et ensuite vous re-effectuer un merge de la partition et du reste de la table et ca pousse vos donnéees très rapidement. |
|
|
00
|
|
|
#12 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 726 ![]() |
On ne connait pas ici la volumétrie associée à votre table de travail et celle d'historique. L'activité est-elle fortement transactionnelle sur cette table ? etc ...
Il y a en effet beaucoup de solutions à votre problème. Maintenant il faut choisir celle qui correspondra à votre besoin. Pas besoin de sortir l'artillerie lourde si cela n'est pas nécessaire. ++ |
|
00
|
Copyright © 2000-2012 - www.developpez.com