intégrer un fichier csv dans une table mysql

Petit nouveau ! | 5 Messages

10 août 2006, 10:47

Bonjour,

Je cherche à intégrer via du code PHP un fichier csv dans une table de ma base Mysql, pour ce faire j'utilise la requete suivante :

LOAD DATA LOCAL INFILE 'J:/intranet/modules_externes/test.csv' INTO TABLE `test` FIELDS TERMINATED BY ';' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'

Pour info mon fichier csv est formaté de la manière suivante :

id;nom;prenom;prenom2;adresse;adresse2;ville;type
id;nom;prenom;prenom2;adresse;adresse2;ville;type


Mais cela ne marche pas rien ne se passe, meme en esseyant directement de lancer ma requete depuis ma console phpmyadmin, et je n'ai aucun message d'erreur.

Si jamais quelqu'un connait la solution à mon problème...

Merci d'avance

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 août 2006, 10:49

Modération : le 1er sujet de la FAQ précise qu'il ne faut pas poser de questions dans la FAQ
:arrow: sujet déplacé
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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 août 2006, 10:51

Est-ce que le lecteur J est accéssible en lecture depuis le serveur ?
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

Petit nouveau ! | 5 Messages

10 août 2006, 10:53

Bonjour,

Oui le lecteur J: se trouve sur le serveur lui-même, d'ailleurs toutes les pages de mon site se trouve sur se lecteur J:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 août 2006, 10:57

Est-ce que je peut savoir comment est-ce que tu lance cette commande ?
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

Petit nouveau ! | 5 Messages

10 août 2006, 11:02

Dans un premier temps je me connecte sur ma page http://127.0.0.1/mysql/ de mon serveur, je me place sur la table concernée et via l'onglet SQL je tape ma requete et je l'execute.

Petit nouveau ! | 5 Messages

10 août 2006, 11:08

Pour info si je passe par le menu importer de ma console mysql et que je selectionne le chemin de mon fichier puis je coche CSV via LOAD DATA et Utiliser l'option LOCAL puis executer, là mon importation fonctionne mais mon souhait est de le faire via mon code php et là impossible...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 août 2006, 11:09

En consultant cette page (http://dev.mysql.com/doc/refman/5.0/fr/load-data.html), j'ai noté quelques points à creuser :
Pour des raisons de sécurité, lorsque les fichiers sont lus sur le serveur, ils doivent se trouver dans le répertoire de la base de données courante, ou bien être lisible par tous. Pour utiliser la commande LOAD DATA INFILE sur des fichiers du serveur, vous devez avoir le droit de FILE sur le serveur. See Section 5.5.3, « Droits fournis par MySQL ».
Depuis MySQL 3.23.49 et MySQL 4.0.2 (4.0.13 sur Windows), LOCAL fonctionne uniquement si votre serveur et votre client ont été configuré pour. Par exemple, si mysqld a été lancé avec --local-infile=0, LOCAL ne fonctionnera pas. See Section 5.4.4, « Problèmes de sécurité avec LOAD DATA LOCAL ».
De plus, utiliser le mot clé LOCAL n'est pas très recommandé ;)
Utiliser LOCAL est plus lent que de laisser le serveur accéder directement aux fichiers, car le contenu du fichier doit être envoyé via le réseau au serveur. D'un autre coté, vous n'aurez pas besoin de droits de FILE pour faire un chargement local.
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

Petit nouveau ! | 5 Messages

10 août 2006, 14:41

Bon apres de nombreuses recherches il s'avere que ce n'est pas trop possible via easyphp d'integrer des données dans une table à partir de code php, je poursuis mes recherches...

En tous les cas merci beaucoup pour ces infos.