pb avec load data infile

Eléphant du PHP | 138 Messages

05 juil. 2005, 10:53

Salut,

J'ai un probleme avec un script qui est le suivant

Code : Tout sélectionner

$filename="donnees/fichier.csv"; $login = "login"; $pass = "pass"; $o_DB = mysql_connect("localhost", $login, $pass); mysql_select_db("data", $o_DB); $delete = "DELETE FROM immodata"; $deleteOK = mysql_query($delete) or print(mysql_error());
si je fait

Code : Tout sélectionner

$replace = "LOAD DATA LOCAL INFILE '$filename' REPLACE INTO TABLE immodata FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'"; $replaceOK = mysql_query($replace) or print(mysql_error());
J'ai l'erreur The used command is not allowed with this MySQL version qui
veux dire qu'il semble que cette commande ne soit pas dispo

si je remplace par

Code : Tout sélectionner

$replace = "LOAD DATA INFILE '$filename' REPLACE INTO TABLE immodata FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'"; $replaceOK = mysql_query($replace) or print(mysql_error());
j'ai l'erreur Access denied for user: 'immocons@localhost' (Using password:
YES)

Je nage un peu

merci de votre aide

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 juil. 2005, 11:01

Pour la 2nd erreur, je te conseil d'enlever le LOCAL car il y a des versions de MySQL qui ne le gère pas bien

ensuite, pour la dernière, je ne pense pas que se soit la requête qui bloque

Tu as essayé de mettre juste la dernière requete ?
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

Eléphant du PHP | 138 Messages

05 juil. 2005, 11:08

oui j'ai tente de mettre

Code : Tout sélectionner

$replace = "LOAD DATA INFILE '$filename' REPLACE INTO TABLE immodata FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'"; $replaceOK = mysql_query($replace) or print(mysql_error());
mais j'ai l'erreur

Access denied for user: 'immocons@localhost' (Using password: YES)

J'ai bien verifier mes logins et pass et pas de soucis a ce niveau

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 juil. 2005, 11:14

Et si tu remplace la requete par un select tout simple, tu as toujours la même erreur ?
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

Eléphant du PHP | 138 Messages

05 juil. 2005, 11:30

un

Code : Tout sélectionner

$replaceOK = mysql_query("select * from immodata");
fonctionne tres bien je pense que le soucis viens de l'insertion du fichier texte

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 juil. 2005, 11:35

Fait ça et poste moi le résultat. 80% des erreurs de LOAD DATA INFILE vient d'une erreur dans le nom du fichier
$replace = "LOAD DATA INFILE '$filename' REPLACE INTO TABLE immodata FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'";
echo $replace;
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

Eléphant du PHP | 138 Messages

05 juil. 2005, 11:49

voila le resultat
 LOAD DATA INFILE 'donnees/cchessy-p.csv' REPLACE INTO TABLE immodata FIELDS TERMINATED BY ';' LINES TERMINATED BY '
'

je ne sais pas si le chemin devrait etre donnees/cchessy-p.csv ou un truc du style /home/site/donnees/cchessy-p.csv

qu'en penses tu ??
[/php]

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 juil. 2005, 12:05

le chemin doit être un chemin ABSOLU du type C:/dir1/dir2/file.csv

C'est surement la raison de l'erreur :wink:
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

Eléphant du PHP | 138 Messages

05 juil. 2005, 17:11

j'ai tente un chemin du style
$filename ="/home/immocons/public_html/donnees/fichier.csv";
$replace = "LOAD DATA INFILE '$filename' REPLACE INTO TABLE immodata FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'"; 
echo $replace; 
mais c'est toujours pareil


Grrrrrrrrrr[/php]

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 juil. 2005, 17:26

Normal, si tu ne lit pas mes post :evil:
le chemin doit être un chemin ABSOLU du type C:/dir1/dir2/file.csv
Il me semble que je ne peut pas être plus clair :wink:
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

Eléphant du PHP | 138 Messages

05 juil. 2005, 17:42

tu penses que cela peu venir de ca

ok je tente de chercher le chemin absolu

Eléphant du PHP | 138 Messages

05 juil. 2005, 17:45

comment je peux trouver ce chemin ??
mon serveur web est sous linux

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 juil. 2005, 17:46

C'est ce que j'était en train de chercher

J'ai commencé par gueuler avant de me rendre compte que /home/ voulait dire serveur Linux

Je te tiens au courant
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

Eléphant du PHP | 138 Messages

05 juil. 2005, 17:52

je pense que le chemin absolu est

_SERVER["DOCUMENT_ROOT"] /home/immocons/public_html

c'est ce que me donne un phpinfo

donc si je rajoute le mon de mon fichier ca me donne

/home/immocons/public_html/donnees/monfichier.csv

donc toujours pareil

Grrrrr