[optimisation] fichier txt -> insert base de donnée

fichier txt -> insert base de donnée [optimisation] - Divers - Programmation

Marsh Posté le 21-11-2008 à 12:58:18    

Ben voilà j'ai une question sur la manière de faire car la méthode que j'utilise est je dois dire assez lente. Donc j'aimerais savoir si il y a une méthode plus rapide.
 
J'ai une fichier texte d'environ 1000 lignes avec un formatage par ligne de type cvs (séparation par virgule des champs). Je dois passer tout les lignes dans une table de base de donnée afin de faire différente requête.
 
en gros actuellement je fais :
 
Ouverture du fichier txt
Ouverture de la base de donnée sur la table cible
-- Début de la boucle dans un while
lecture d'une ligne  
split des infos - insert to dans la db
-- fin de la boucle  
fermeture de la db  
fermeture du fichier txt
 
Y aurait il une manière plus efficace ? en gros peut on optimiser ça
 

Code :
  1. While r.Peek() > -1
  2.         texte = r.ReadLine()
  3.         s2 = texte
  4.         'ôte la dernière virgule
  5.         s2 = Mid(s2, 1, Len(s2) - 1)
  6.         'Remplace les , par des ','
  7.         s2 = Microsoft.VisualBasic.Replace(s2, ",", "','" )
  8.         'Ajoute le premier et le dernier '
  9.         s2 = "'" & s2 & "'"
  10.         s2 = s2 & " )"
  11.         s2 = "INSERT INTO " & tb_name & " VALUES (" & s2
  12.         rs = con.Execute(s2)
  13. End While


Message édité par bossamiral2 le 21-11-2008 à 13:35:50
Reply

Marsh Posté le 21-11-2008 à 12:58:18   

Reply

Marsh Posté le 21-11-2008 à 13:36:10    

Update des infos

Reply

Marsh Posté le 21-11-2008 à 13:56:25    

VB et les recordset, c'est vieux !
Est-ce que d'utiliser les méthodes .add, .edit ou autre .update (je ne sais plus comment elles s'appellent) de l'objet RS n'est pas plus rapide que l'excecute d'une chaine SQL ?
 
Genre, plutôt que de faire un rs.execute('INSERT ...'), faire un
rs.fields(0) = x
rs.fields(1) = y
rs.update
 
Je ne me souviens plus des syntaxes exactes, mais il me semble que c'est un peu plus rapide. Enfin, si mes souvenirs sont bons.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 21-11-2008 à 14:16:24    

merci je vais faire un essai

Reply

Marsh Posté le 21-11-2008 à 16:53:39    

Tu prend un ETL :o

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed