Inserer des milliers de données texte

Eléphanteau du PHP | 41 Messages

22 févr. 2010, 19:46

Bonsoir,

Je dispose d'un fichier texte de 19664 lignes. Chaque ligne se composent de 11 données séparées par une virgule comme l'exemple ci-dessous (ce sont des données climatique) :
125,0,70,0,98,0,0,0,0,25,0

Je souhaite insérer ces données dans une table mais je ne me vois pas le faire manuellement,d'autant que j'ai 3 fichiers comme ça !!

Ma question est simple, commet peut-on faire pour insérer automatiquement ces données dans une table.

Merci de votre aide

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 févr. 2010, 20:14

Je te propose LOAD DATA INFILE ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
AB
ViPHP | 5818 Messages

22 févr. 2010, 20:25

Tu l'as déjà créée ta table, c'est quoi sa structure ?

Sinon sur le principe oui c'est possible.
On peux s'y prendre comme ceci :
Avec la fonction file() de php tu récupères toutes les lignes de ton fichier sous forme d'un tableau. Puis tu fais un insert en listant ton tableau.

Bon je viens de voir le message de Zeus en postant. Tu pourras avantageusement utiliser sa méthode avec la structure de tes données.

Eléphanteau du PHP | 41 Messages

22 févr. 2010, 22:41

C'est génial cette fonction, je ne connaissais pas du tout !!

Je vais tester ça demain et je vous tiendrais au courant du résultat. A priori c'est tellement simple à faire que cela ne devrait pas poser de problème. Croisons les doigts.

Merci à AB et Zeus !

Eléphanteau du PHP | 41 Messages

23 févr. 2010, 10:36

Bien évidemment, cela ne marche pas. Lorsque je tape directement la commande, mysql me répond ça : Access denied for user
J'ai essayé avec le chemin absolu du fichier, c'est pareil. C'est étonnant car je suis bien connecté sous phpmyadmin.

je passe maintenant directement par phpmyadmin qui a cette fonction 'DATA INFILE (je suis tombé dessus par hasard ce matin) dans la rubrique SQL
J'ai d'abord essayé avec mon fichier texte que j'ai ensuite transformé en un fichier csv.

Je complète les différentes champs puis j'exécute mais il n'y a que la première ligne qui s'insère dans la table, que ce soit à partir de mon fichier texte ou du .csv La première ligne est parfaitement insérée.

Je ne sais pas trop si le problème vient de mon fichier txt ou csv (mais dans ce cas comment le modifier pour que ça fonctionne.) ou de phpmyadmin.

Dans bloc note, menu format j'ai coché "retour automatique à la ligne" et maintenant il m'insère les 2 premières lignes mais pas plus. J'ai aussi essayé avec un fichier de quelques lignes, pas de changement

Merci de m'aider.

Eléphanteau du PHP | 41 Messages

23 févr. 2010, 16:14

Ca fontionne, cela venait d'un champ ID de ma table qui refusait de s'incrémenter.

Merci