serialv2
Messages postés41Date d'inscriptionjeudi 5 mars 2009StatutMembreDernière intervention13 août 2012
-
23 déc. 2009 à 13:50
tpoinsot
Messages postés345Date d'inscriptionmardi 1 juin 2004StatutMembreDernière intervention17 octobre 2014
-
29 déc. 2009 à 09:15
Salut,
Je vais essayer d'etre le plus clair possible,
Voila j'ai une base de donnee ARTICLE a mettre a jour regulierement.
Pour ce faire je dispose d'un fichier XML D'environ 50milles enregistrements Comme ceci:
<__Article>10000011</__Article>
<___Gencod>7040</___Gencod>
donc apres j'ai ma table qui as environ 100milles enregistrement.
Je lis mon fichier xml ligne par ligne en recuperant la valeur des balises,
JE recherche pour chaque enregistrement "Gencod" de mon fichier XML si il y a un enregistrement dans la base article,pour remettre a jour le champs "ARTICLE",de cette maniere,
For I = 1 To P.Max
If I Mod 10 = 0 Then ' If loop has repeated
' 1000 times.
OpenForms = DoEvents ' Yield to operating system
End If
Next I
Ca fonctionne nikel crhome,mais le probleme c'est que ca met un temps fou + ou moins 12heures,J'aimerais savoir si qqun aurai une autre solution qui me permeterai de gagner du temps sur ce procesus qui doit etre effectuer tous les semaines.
MErci
tpoinsot
Messages postés345Date d'inscriptionmardi 1 juin 2004StatutMembreDernière intervention17 octobre 20144 23 déc. 2009 à 14:07
Bonjour,
C'est long d'ouvrir/fermer un recordset (+ update) à chaque itération.
Crée plutôt une table de travail, avec un insert à chaque itération et fermer le recordset à la fin de la boucle. Pour finir, un update global par SQL.
serialv2
Messages postés41Date d'inscriptionjeudi 5 mars 2009StatutMembreDernière intervention13 août 2012 23 déc. 2009 à 16:29
Non malheuresement,L'application est bien faite mais il y a qq imperfection.
J'ai deja fait la table de travail inserer les enregistrement,il ne me reste plus qu'a updater les tables!!!
merci a tous les deux!!
je reviendrais certainenement cers vous rapidement,car je me mets a visual studio 2008
tpoinsot
Messages postés345Date d'inscriptionmardi 1 juin 2004StatutMembreDernière intervention17 octobre 20144 29 déc. 2009 à 08:04
Bonjour, je reviens de quelques jours au soleil, et les idées plus claires.
Il m'est arrivé de faire l'insertion de quelques centaines de milliers d'enregistrements, et le plus rapide que j'ai constaté est d'utiliser la fonction d'insertion de fichier texte. On la trouve dans tous les bons sgbd.
Parfois on peut même créer la table au passage. On n'a plus qu'a créer un index pour la jointure et faire l'update global. Et détruire la table temporaire.
tpoinsot
Messages postés345Date d'inscriptionmardi 1 juin 2004StatutMembreDernière intervention17 octobre 20144 29 déc. 2009 à 08:24
D'un simple fichier texte contenant les données, en CSV. Ici, il faudrait refaire le fichier, mais globalement on est gagnant en temps. On peut ensuite (si nécessaire) faire des contrôles de masse sur la table résultante plutôt que de travailler sur chaque enregistrement.
Comme par exemple la liste des enregistrements qui n'ont pas été inclus.
tpoinsot
Messages postés345Date d'inscriptionmardi 1 juin 2004StatutMembreDernière intervention17 octobre 20144 29 déc. 2009 à 09:15
Ah, je comprends mieux tes questions. j'étais un peu surpris.
C'est serialv2 qui demandait de l'aide, et je faisais part de mon expérience, si elle pouvait lui être utile.
Moi, non, je n'ai pas de CSV à intégrer en ce moment.
thip