Page 1 sur 2
[mysql]problème load_data_infile quotes ou plus grave ?
Posté : 03 août 2007, 21:35
par Black_Layer
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.
Posté : 03 août 2007, 21:39
par Sékiltoyai
Problème de charset. Essaye sans les ‘
Posté : 04 août 2007, 18:31
par Black_Layer
même erreur
aidez-moi svp
Posté : 04 août 2007, 20:14
par Sékiltoyai
Tu peux donner la nouvelle requète ?
Posté : 04 août 2007, 22:04
par zeus
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.
Posté : 04 août 2007, 22:57
par Sékiltoyai
Je pense personnellement qu'il y a un problème de charset…
Posté : 05 août 2007, 16:04
par zeus
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

Posté : 05 août 2007, 16:05
par Black_Layer
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 ??
Posté : 05 août 2007, 16:14
par Sékiltoyai
Oui mais tu avais ce type de quotes à plusieurs endroits dans la requète
Posté : 05 août 2007, 16:24
par Black_Layer
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)

Posté : 05 août 2007, 17:39
par Sékiltoyai
non, il faut que tu utilises des simples quotes partout
Posté : 05 août 2007, 17:46
par zeus
Sinon, concernant l'emplacement du fichier, s'il se trouve à la racine de ton serveur, je dirais "/Liste_JT"

Posté : 05 août 2007, 17:50
par Black_Layer
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...
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
Posté : 05 août 2007, 18:26
par zeus
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 :
Je remarque que tu n'utilises pas un simple quote (', au dessus du 4)
Posté : 05 août 2007, 18:41
par Black_Layer
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