Forum Clubic

Load data infile et chemin

Bonjour.

J’ai un petit problème avec LOAD DATA INFILE.
En effet si je fait ceci

LOAD DATA INFILE 'geoloc.csv' ....

j’obtiens une erreur “‘c:\wamp\bin\mysql\mysql5.1.32\data\geolocalisation\geoloc.csv’ not found (Errcode: 2)”

Ma requête se trouve dans le fichier test.php, et dans ce même répertoire on trouve geoloc.csv.

Pourquoi va t’il chercher dans ce répertoire étrange?
Comment le faire chercher dans le même répertoire que celui ou se situe mon test.php?

Merci par avance.
Edité le 27/04/2009 à 11:15

Parce que c’est MySQL qui exécute la requête, pas PHP.
Puisque le chemin fourni est relatif, MySQL va chercher dans son répertoire à lui.

En utilisant la variable PHP : FILE
A la génération de la requête, au lieu de donner simplement le nom du fichier csv, utilisez ce code (3ème exemple).
Il vous donnera le chemin absolu vers votre fichier csv si celui-ci est bien présent dans le même répertoire que votre page PHP, et MySQL saura le retrouver

Merci.

C’est pas loin de marcher.
En effet ta commande me donne ceci ‘C:\wamp\www\geoloc\geoloc.csv’
SI je laisse tel quel, j’obtiens donc ceci LOAD DATA INFILE C:\wamp\www\geoloc\geoloc.csv INTO TABLE qui créé une erreur sql ce qui est normal.

Si je fais ceci LOAD DATA INFILE ‘C:\wamp\www\geoloc\geoloc.csv’ INTO TABLE j’obtiens cette erreur.
‘C:wampwwwgeolocgeoloc.csv’ not found (Errcode: 2)

Pour que ca marche il faut doubler les \ LOAD DATA INFILE ‘C:\wamp\www\geoloc\geoloc.csv’ INTO TABLE

Etrange non?

Non c’est normal.
Je n’ai pas précisé que \ est un caractère d’échappement, et que MySQL le comprend comme tel.
Il faut donc les doubler pour intégrer les \ à la chaine de caractères qu’est la requête

Merci bien.

Résolu :slight_smile: