begin process at 2012 02 10 07:48:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Requêtes

 > 

Comment ne pas copier deux fois la meme ligne ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment ne pas copier deux fois la meme ligne ?

mercredi 2 août 2006 à 15:34:58 | Comment ne pas copier deux fois la meme ligne ?

IceFinger



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
jeudi 3 août 2006 à 12:28:44 | Re : Comment ne pas copier deux fois la meme ligne ?

skweeky

Membre Club Administrateur CodeS-SourceS
Ne connaissant pas bien du tout MySQL je ne peux émètre qu'une théorie.

Si à la base tu as un fichier à importer, fait le en premier temps dans une table temporaire ou une table qui est là juste pour cet usage (vidée après utilisation).
Puis j'utiliserais une requête de ce genre :

INSERT INTO MaTable (meschamps, ...)
SELECT meschamps, ...
FROM MaTableTemporaire AS tmp
WHERE NOT EXISTS (SELECT *
                                       FROM MaTable as tab
                                       WHERE tmp.champ1 = tab.champ AND tmp.champ2 = tab.champ2) -- etc... pour les autres champs de la table

MaTable est la table de destination
MaTableTemporaire la table dans laquel on fait ses insertion temporaire (d'un fichier)

J'espère que EXISTS existe sur MySQL, normalement c'est un standard ISO.

Plus simple si une clef primaire existe il ne faut faire la comparaison que sur elle.

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
jeudi 3 août 2006 à 14:41:20 | Re : Comment ne pas copier deux fois la meme ligne ?

IceFinger



Merci pour cette reponse, elle me parait judicieuse, mais dans quelques jour il y aura des centaines de miliers de lignes a traiter, et pour 5 types de donnees differentes chaques heures. Ca risque d'etre tres rapidement tres lourd.

Pour le moment, je prend le timestamp de la premiere ligne du fichier, je suprimme toute les date ulterieur, et recopie tout, c'est le plus rapide que j'ai trouve. si quelqu'un a mieux, moins 'barbare', vous etes bienvenue
vendredi 4 août 2006 à 12:17:58 | Re : Comment ne pas copier deux fois la meme ligne ?

aieeeuuuuu

salut

comment est composé et mis à jour ton fichier de données ?

est ce que le fichier est toujours le meme et modifié. est ce que des lignes sont insérées ?

l'idée serait peut etre d'archiver tes données insrées à l'heure H-1 et de les comparer avec tes données de l'heure H, mais tout depend de tes données et comment le fichier est mis a jour.

sinon as tu une clef primaire de définie dans la table cible ?


Sinon je vois une autre solution bien differente, mais je ne sais pas si MySQL gere les vues.
si oui, tu peux créer une table avec tes données. tu ajoute toutes les heures tes données sans te soucier des doublons, et tu crée une vue qui fait un distinct :
SELECT DISTINCT * FROM matable


jeudi 19 octobre 2006 à 10:30:37 | Re : Comment ne pas copier deux fois la meme ligne ?

Ordinastie

Bonjour,

Si t'as de quoi définir proprement que deux lignes sont identiques, je pense qu'il faut creuser du coté du INSERT IGNORE...

@+ Ordinastie


Cette discussion est classée dans : ligne, programme, copier, datafile


Répondre à ce message

Sujets en rapport avec ce message

SAGE ligne 100 SQL [ par sdelaunay ] voudrai échanger des informations avec des personnes développant pour le logiciel SAGE en ODBC ou SQLJe cherche à écrire dans la base de données, nota Droit sur une table sous sql serveur [ par jimmy69 ] Bonjour a tous,Voila je suis en train de me faire un p'tit projet sous sql serveur j'ai realise mon analyse entite relation..... j'ai aussi cree mes t trou dans ma table oracle [ par bigood69 ] Bonjour,A cause d'une fausse manipulation Programme SQL [ par lapucedu88 ] Bonjour, je suis en deuxiém année de BTS informatique de gestion et je dois réaliser un petit programme SQL.Je sais créer des procédures et des foncti Nombre de ligne optimal d'une table? sql server 2000 [ par vindavid38 ] ZanTarBonjour est ce quelqu'un saurait s'il y a une taille optimale (en nombre de ligne) pour une table avec SQL server 2000.??merci bcp de rep@+ Packages avec erreurs [ par dpfort ] Bonjour,Je suis en train de tester les packages et les fonctions. J'ai cherché la solution à ces erreurs, mais cela ne s'améliore pas.Pouvez-vous me d Numeroter ligne pour access [ par fmazoue ] Est ce qu'il et possible dans une requete sql (pour access) select de numeroter les lignes retourner dans le style de rownum de oracle ?Bien sur je pe Comment mettre une valeur cachée ligne par ligne [ par dpfort ] Bonsoir, Je cherche à mettre une valeur cachée en mise à jour, ligne par ligne en fonction du N°d'identifiant. C'est à dire je ne donne pas la possibi Existe-il une fonction qui retourne toujours la dernière ligne d'une table [ par SwatchDev ] La question est dans le titre... "Existe-il une fonction qui retourne toujours la dernière ligne d'une table"Dans mon cas, ça serait pour faire un UPD problème d'enregistrement [ par nawal59 ] Salut..jai un formulaire de saisie, et vu qu'il est long j'ai du le faire en deux formulaires. DOnc grace à un bouton mis sur la1ere partie du formula


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,867 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales