Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3252 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  optimiser des insert

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

optimiser des insert

n°1360747
newneo2001
Posté le 06-05-2006 à 00:27:42  profilanswer
 

Bonjour,
 
voici mon problème, j'ai un fichier .txt qui contient 40 000 lignes (chaque ligne contient un numéro de série de 19 caractères)
 
il faut que j'enregistre tous ces numéros dans ma base MYSQL. Ce que j'ai testé pour le moment c'est une boucle de mon fichier ligne par ligne et ui fait un insert sur chaque ligne. Mais c'est très long ca m'a pris 40 secondes donc trop long pour ce que je veux faire.  
 
Je voulais savoir si vous aviez une idée pour faire ca le plus rapidement possible. Existe il une requete insert "multiples" qui permettrait de faire plusieurs enregistrements en une seule fois, si oui je la connais pas.
 
Merci d'avance


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
mood
Publicité
Posté le 06-05-2006 à 00:27:42  profilanswer
 

n°1360755
newneo2001
Posté le 06-05-2006 à 01:01:39  profilanswer
 

c'est bon trouvé. pour ceux qui cherche la solution
 
insert into table (champ) VALUES ('value1'), ('value2') etc... et voila
 
pour info je suis tombé de 40 secondes à 1.68 sec ;) pas mal comme truc quand même :)
 
@++


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
n°1360773
weed
Posté le 06-05-2006 à 02:37:27  profilanswer
 

euhh, loool d'une je ne vois pas comment tu pourrais faire autrement que insert into table (champ) VALUES ('value1'), ('value2')  et deuxio, tu es toujours obligé de lire ton fichier ligne par ligne et d'inserer à la volée dans ta base de donnée

n°1360774
naceroth
Posté le 06-05-2006 à 03:35:51  profilanswer
 

weed a écrit :

euhh, loool d'une je ne vois pas comment tu pourrais faire autrement que insert into table (champ) VALUES ('value1'), ('value2')  et deuxio, tu es toujours obligé de lire ton fichier ligne par ligne et d'inserer à la volée dans ta base de donnée


 
euhh, loool bah non :D
 
Il passe de 40 instructions insert à une seule, ça réduit forcément beaucoup le temps d'exécution.
 
A la limite, il lit son fichier avec file(), transforme le tout en chaine avec implode et efface les ajouts provoqués par file puis colle ça derrière sa requête et basta, c'est encore plus efficace que ta lecture à la volée :)

n°1360785
weed
Posté le 06-05-2006 à 08:43:43  profilanswer
 

oki, je ne savais pas que l'on pouvait lire un fichier tout d'un seul coup.

n°1360792
Taz
bisounours-codeur
Posté le 06-05-2006 à 09:36:25  profilanswer
 

au détriment de l'utilisation mémoire. fais 40.000 insert dans une transaction, ça devrait être plus performant mais pas gourmand en mémoire.

n°1360818
Sh@rdar
Ex-PhPéteur
Posté le 06-05-2006 à 11:05:14  profilanswer
 

et un LOAD INFILE ça serait pas encore plus rapide ?


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1360845
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 06-05-2006 à 12:33:58  profilanswer
 

weed a écrit :

euhh, loool d'une je ne vois pas comment tu pourrais faire autrement que insert into table (champ) VALUES ('value1'), ('value2')


Code :
  1. INSERT table SET champ=value1


:D

Message cité 1 fois
Message édité par The-Shadow le 06-05-2006 à 12:38:09
n°1360917
naceroth
Posté le 06-05-2006 à 16:01:11  profilanswer
 

Sh@rdar a écrit :

et un LOAD INFILE ça serait pas encore plus rapide ?


 
Je me souviens pas si on peut préciser le champs de destination avec un load data infile, mais je pense pas.

n°1360923
Sh@rdar
Ex-PhPéteur
Posté le 06-05-2006 à 16:09:13  profilanswer
 

si si, tu peux ignorer des lignes et mettre les champs dans l'ordre que tu veux :jap:


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
mood
Publicité
Posté le 06-05-2006 à 16:09:13  profilanswer
 

n°1360941
weed
Posté le 06-05-2006 à 17:11:33  profilanswer
 

The-Shadow a écrit :

Code :
  1. INSERT table SET champ=value1


:D


 [:argue]

n°1360952
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 06-05-2006 à 17:46:24  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  optimiser des insert

 

Sujets relatifs
ACCESS requete ajout Insert into - a l'aide !"Syntax error converting the varchar value.." requette insert
Optimiser mon siteinsert et update anarchiques dans mysql ?
INSERT INTO ou UPDATE en sql?requete "insert" dans microsoft sql server avec PHP
[Résolu] Problème pour un INSERT INTO d'une base vers une autre >>> INSERT INTO <<<
INSERT INTO -> SELECT sur deux base distinct, possible ?probleme dans INSERT INTO......SELECT
Plus de sujets relatifs à : optimiser des insert


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)