Requete SQL, comment ne pas inserer 2 fois la meme chose ?

IceFinger Messages postés 24 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 7 août 2006 - 2 août 2006 à 15:31
IceFinger Messages postés 24 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 7 août 2006 - 7 août 2006 à 22:36
Bonjour a tous

Voila mon probleme, je dois inserer des donnees
venant d'un datafile dans une base de donnee, jusque la aucun
problemes. Seulement le programme doit etre execute toutes les heures,
car le datafile est regulierement mis a jour. Comment ne pas copier
deux fois la meme ligne dans la DB sans avoir a faire un test dans le
programme c++ (Car il y a jusqu'a 40000 lignes et 49 colonnes), mais
plutot dans la requete (si c'est possible) ?

Merci d'avance

2 réponses

cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
7 août 2006 à 21:58
Bonsoir,

N'y a t'il y a un champs dans tes 49 qui peut de servir de clef primaire (ou une clef primaire sur plusieurs champs) du style un gdh, un id unique...

Si tu peux modifier ton fichier data, tu peux soit supprimer la ligne que tu viens d'inserer, soit la deplacer dans un autre fichier (donc deux fichiers), soit par exemple, mettre un caractere d'identification en début de ligne que tu as insere.

Voila, sinon il faut que tu testes tout tes champs.

Matt...
0
IceFinger Messages postés 24 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 7 août 2006
7 août 2006 à 22:36
Merci pour ta reponse, mais je ne peux pas toucher aux
fichiers, et malheuresement meme le timestmap se repete 7 fois, car il
y a 7 "magnet" pour un temps donne.

Voila ce que je fais pour le moment dans le programme :

Je verifie si le fichier existe

Si je peux le lire et interpreter le premier timestamp

j'efface tout ce qui est superieur au premier timestamp

je reecris


De cette maniere je n'ai qu'une requete (deja une dizaines de secondes)


Mais bon c'est un peu barbare
0
Rejoignez-nous