OVH Cloud OVH Cloud

Quelle solution pour une mise à jour

1 réponse
Avatar
Alexandre
Bonjour,
Je r=E9cup=E8re =E0 l'aide d'un lot DTS 7 fichiers de m=EAme=20
structure que j'ins=E8re dans ma base de donn=E9es.
Chaque jour, ces fichiers sont mis =E0 jour et parfois=20
archiv=E9 en supprimant leur contenu. Ma base, elle doit=20
toujorus etre =E0 jour avec toutes les donn=E9es.
Ma question est :
Dois-je utiliser un d=E9clencheur pour ne pas remettre =E0=20
jour les elements d=E9j=E0 rentr=E9s dans la base et pour=20
n'ins=E9rer que les nouvelles donn=E9es. Mais comment dois-je=20
faire ?
ou dois-je le r=E9aliser =E0 l'aide d'une requete (comment=20
faire =E9galement).

Petit exemple :
Mes fichiers se pr=E9sentent de la facon suivante :
Date; heure; N=B0 infopak; adresse IP; Nom de borne

La table est structur=E9e de la m=EAme maniere.
Chaque jour le fichier est incr=E9ment=E9.
Jour J :
27/07/2004; 20:15:12; 187554; TOTO

Jour J+1
27/07/2004; 20:15:12; 187554; TOTO
28/07/2004; 20:16:45; 187554; TITI

Je ne souhaite pas ins=E9rer 2 fois le m=EAme champs, =E0 savoir=20
TOTO et ne souhaite pas supprimer chaque jour ma table.
La solution la mieux adapt=E9e serait le d=E9clencheur, mais=20
comment comparer si la ligne est d=E9j=E0 rentr=E9e et si oui ne=20
pas l'ins=E9rer.
Merci pour votre aide et j'espere avoir =E9t=E9 assez clair.

Alex

1 réponse

Avatar
gafish
Bonjour,

Tu as plusieurs solutions.
Soit tu intègres tes fichiers dans des tables temporaires, et ensuite par
requête tu mets à jour la base de production en n'insérant que les dates de
ta table temporaire supérieure à la date maxi de ta table de production.
Soit tu mets une clé primaire sur date et heure, et dans les propriétés de
l'index tu lui spécifies de ne pas tenir compte des erreurs (je ne me
rappele plus le libellé exact de cette propriété et je n'ai pas sql server
sous les yeux). Ainsi les enregistrements déja présents seront ignorés et
les nouveaux ajoutés.

Arnaud

"Alexandre" a écrit dans le message news:
722201c47632$6338b680$
Bonjour,
Je récupère à l'aide d'un lot DTS 7 fichiers de même
structure que j'insère dans ma base de données.
Chaque jour, ces fichiers sont mis à jour et parfois
archivé en supprimant leur contenu. Ma base, elle doit
toujorus etre à jour avec toutes les données.
Ma question est :
Dois-je utiliser un déclencheur pour ne pas remettre à
jour les elements déjà rentrés dans la base et pour
n'insérer que les nouvelles données. Mais comment dois-je
faire ?
ou dois-je le réaliser à l'aide d'une requete (comment
faire également).

Petit exemple :
Mes fichiers se présentent de la facon suivante :
Date; heure; N° infopak; adresse IP; Nom de borne

La table est structurée de la même maniere.
Chaque jour le fichier est incrémenté.
Jour J :
27/07/2004; 20:15:12; 187554; TOTO

Jour J+1
27/07/2004; 20:15:12; 187554; TOTO
28/07/2004; 20:16:45; 187554; TITI

Je ne souhaite pas insérer 2 fois le même champs, à savoir
TOTO et ne souhaite pas supprimer chaque jour ma table.
La solution la mieux adaptée serait le déclencheur, mais
comment comparer si la ligne est déjà rentrée et si oui ne
pas l'insérer.
Merci pour votre aide et j'espere avoir été assez clair.

Alex