[mysql]problème load_data_infile quotes ou plus grave ?

Eléphanteau du PHP | 12 Messages

03 août 2007, 21:35

Bonsoir, j'essaye de faire un LOAD_DATA_INFILE sur un fichier CSV nommé LJT.

Le fichier est à la racine du serveur en CHMOD 777.

La requête que j'exécute est la suivante :

Code : Tout sélectionner

LOAD DATA INFILE ‘LJT.csv’ INTO TABLE Liste_JT FIELDS TERMINATED BY ';' ENCLOSED BY ‘”’ ESCAPED BY '\\' LINES STARTING BY '' TERMINATED BY '\n' (Categorie, Ville, Nom, Statut, 2000, 2002, 2004, 2006, 2007)
La table Liste_JT existe bel et bien ainsi que les différents champs.

L'erreur est la suivante :
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '‘LJT.csv’
INTO TABLE Liste_JT
FIELDS
TERMINATED BY ';'
ENCLOSED BY â' at line 1
Aidez-moi svp.

ViPHP
ViPHP | 5924 Messages

03 août 2007, 21:39

Problème de charset. Essaye sans les ‘

Eléphanteau du PHP | 12 Messages

04 août 2007, 18:31

même erreur :(

aidez-moi svp

ViPHP
ViPHP | 5924 Messages

04 août 2007, 20:14

Tu peux donner la nouvelle requète ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 août 2007, 22:04

Déjà, je te conseille la lecture de ce post : http://www.phpfrance.com/forums/voir_sujet-18738.php
surtout le paragraphe suivant (la ligne intéressante est en gras) :
La ligne LOAD DATA INFILE ‘fichier.csv’ permet de définir le fichier à explorer. Lorsque les fichiers de données sont sur le serveur, celui-ci utilise les règles suivantes :
  • Si un chemin absolu est fourni, le serveur utilise le chemin tel quel.
  • Si un chemin relatif est fourni, avec un ou plusieurs éléments de dossiers, le serveur recherche le fichier relativement à son dossier de données.
  • Si le fichier n'a pas d'éléments de dossier, le serveur recherche les données dans le dossier de base de données courante.
Sinon, comme le conseille Sekiltoyai, n'utilise que des ' (simples quotes) dans tes requêtes SQL.
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
ViPHP | 5924 Messages

04 août 2007, 22:57

Je pense personnellement qu'il y a un problème de charset…

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 août 2007, 16:04

Tu nous as dit que ton fichier était à la racine de ton serveur, mais l'instruction LOAD DATA INFILE, dans le cas d'une adresse relative, comme dans ton cas (l'adresse ne commence pas pas un "/"), le serveur de données va chercher dans son répertoire racine (là où il est installé)

Pour le soucis d'encodage, vu que seuls les caractères de protection différents du simple quote (') déconnent, je te conseille de n'utiliser que des simples quotes ;)
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éphanteau du PHP | 12 Messages

05 août 2007, 16:05

Tu peux donner la nouvelle requète ?
Bah c'est la même mais sans les quote (j'ai essayé en virant les quotes uniquement sur l'ENCLOSED BY et en les virant sur tout mais l'erreur est identique)

@zeus : et je dois mettre LOAD DATA INFILE 'http://xx.xxx.xxx.xx/ljt.csv' alors ??

ViPHP
ViPHP | 5924 Messages

05 août 2007, 16:14

Oui mais tu avais ce type de quotes à plusieurs endroits dans la requète

Eléphanteau du PHP | 12 Messages

05 août 2007, 16:24

Oui mais tu avais ce type de quotes à plusieurs endroits dans la requète
Bah oui, je me suis basé LÀ DESSUS

Bon alors si on résume ce que vous me dites je devrais taper ceci ??

Code : Tout sélectionner

LOAD DATA INFILE http://xx.xxx.xxx.xx/ljt.csv INTO TABLE Liste_JT FIELDS TERMINATED BY ; ENCLOSED BY ” ESCAPED BY \\ LINES STARTING BY '' TERMINATED BY \n (Categorie, Ville, Nom, Statut, 2000, 2002, 2004, 2006, 2007)
:?: :?: :?:

ViPHP
ViPHP | 5924 Messages

05 août 2007, 17:39

non, il faut que tu utilises des simples quotes partout

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 août 2007, 17:46

Sinon, concernant l'emplacement du fichier, s'il se trouve à la racine de ton serveur, je dirais "/Liste_JT" :-k
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éphanteau du PHP | 12 Messages

05 août 2007, 17:50

Mais j'ai toujours utilisé des simple quotes partout, le problème c'est que dans ma liste csv (qui est très longue !!), j'ai des guillements et que lorsque je les mets entre simple quotes on arrive au premier post de ce topic...

:-s :-k :-s

Alors je tape quoi ?

Ca ?

Code : Tout sélectionner

LOAD DATA INFILE ‘/LJT.csv’ INTO TABLE Liste_JT FIELDS TERMINATED BY ';' ENCLOSED BY ” ESCAPED BY '\\' LINES STARTING BY '' TERMINATED BY '\n' (Categorie, Ville, Nom, Statut, 2000, 2002, 2004, 2006, 2007)
Si oui, l'erreur générée est la suivante :

Code : Tout sélectionner

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '‘/LJT.csv’ INTO TABLE Liste_JT FIELDS TERMINATED BY ';' ENCLOSED BY ' at line 1

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 août 2007, 18:26

Quand je regarde cette erreur

Code : Tout sélectionner

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '‘/LJT.csv’ INTO TABLE Liste_JT FIELDS TERMINATED BY ';' ENCLOSED BY ' at line 1
Je lit que l'erreur se situe avant le /LJT.csv, donc le quote.

Ensuite, je regarde cette ligne dans ta requête :

Code : Tout sélectionner

LOAD DATA INFILE ‘/LJT.csv’
Je remarque que tu n'utilises pas un simple quote (', au dessus du 4)
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éphanteau du PHP | 12 Messages

05 août 2007, 18:41

Oops, c'est vrai que si on commence comme ça, ça va pas aller !

Désolé, le copier-coller c'est vraiment pas bon (depuis le début je vous recopie une mauvaise erreur suite à un mauvais copier-coller)

Donc voici l'erreur qui me pose soucis :

Code : Tout sélectionner

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 2000, 2002, 2004, 2006, 2007)' at line 10