Insérer le contenu d'un fichier TXT dans une table... - SQL/NoSQL - Programmation
Marsh Posté le 28-04-2005 à 14:30:59
sans doute que ton animalImage est un varchar de 15 et que /images/licorne.jpg ca fait + de 15 char...
Marsh Posté le 28-04-2005 à 14:39:43
Et le LINES TERMINATED BY ',' . Or, tes lignes ne sont pas terminée par ','
Bref, commence par relire ce que t'as fait
Marsh Posté le 28-04-2005 à 14:51:52
Jotunheim a écrit : sans doute que ton animalImage est un varchar de 15 et que /images/licorne.jpg ca fait + de 15 char... |
OK j'ai changé le VARCHAR(15) par (25) c'est OK merci.
Marsh Posté le 28-04-2005 à 14:52:24
Ca fait pas beaucoup, seulement 25 pour un nom de fichier on sait jamais
Marsh Posté le 28-04-2005 à 14:53:25
FlorentG a écrit : Et le LINES TERMINATED BY ',' . Or, tes lignes ne sont pas terminée par ',' |
Correction : mon fichier TXT comporte bien des "," en fin de lignes, exemple :
"Licorne";"cheval";"corne spiralée";"5000";"/images/licorne.jpg",
"Pégase";"cheval";"animal ailé";"8000";"/images/pegas.jpg",
"Lion";"chat";"grande taille";"2000";"/images/lion.jpg",
Après nouveau test, seule la 1ère ligne "Licorne"... est insérée, les autres non...
Marsh Posté le 28-04-2005 à 14:55:06
FlorentG a écrit : Ca fait pas beaucoup, seulement 25 pour un nom de fichier on sait jamais |
C'est juste un test PHP/MySQL, je débute et ce sont les exmples du bouquin...
Marsh Posté le 28-04-2005 à 15:13:42
ReplyMarsh Posté le 28-04-2005 à 15:39:55
cto a écrit : Correction : mon fichier TXT comporte bien des "," en fin de lignes, exemple : |
il faut que tes données soit à la queue leu leu, sans passage à la ligne, si tu utilises la virgule comme séparateur ... sinon ne mets pas de virgule et mets "LINES TERMINATED BY NEWLINE".
Marsh Posté le 28-04-2005 à 16:39:22
Beegee a écrit : il faut que tes données soit à la queue leu leu, sans passage à la ligne, si tu utilises la virgule comme séparateur ... sinon ne mets pas de virgule et mets "LINES TERMINATED BY NEWLINE". |
OK j'ai testé "tes données soit à la queue leu leu" donc comme ça :
"Licorne";"cheval";"corne spiralée";"5000";"/images/licorne.jpg","Pégase";"cheval";"animal ailé";"8000";"/images/pegas.jpg","Lion";"chat";"grande taille";"2000";"/images/lion.jpg",
J'exécute cette commande :
LOAD DATA LOCAL INFILE 'animaux.txt' INTO TABLE `animal`
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY ','
(`animalnom` , `animaltype` , `animaldesc` , `animalprix` , `animalimage`)
Aucun message d'erreur de requête = Cool !
Et voici le résultat : commande = select * from animal
animalID / animalNom / animalType / animalDesc / animalPrix / animalImage
0 / Licorne / cheval / corne spiralée / 5000.00 / images/licorne
Seule la première ligne "Licorne..." est enregistrée...
Sinon en appliquant "LINES TERMINATED BY NEWLINE" à partir des commandes suivantes :
LOAD DATA LOCAL INFILE "animaux.txt" INTO TABLE Animal
FIELDS TERMINATED BY ';'
LINES TERMINATED BY NEWLINE
(animalnom,animaltype,animaldesc,animalprix,animalimage)
J'obtiens le message d'erreur suivant :
Erreur de syntaxe près de 'NEWLINE (animalnom,animaltype,animaldesc,animalprix,animalimage' à la ligne 3
???
Marsh Posté le 28-04-2005 à 17:46:49
Jotunheim a écrit : jette ton bouquin... |
Ce n'est pas le bouquin qui est en cause c'est moi lol
Mais cette réponse ne m'aide pas...
Marsh Posté le 28-04-2005 à 14:26:52
Bonjour,
Ma table est la suivante : Animal...
Voici le dump de cette table :
CREATE TABLE `animal` (
`animalID` int(5) NOT NULL default '0',
`animalNom` varchar(25) NOT NULL default '',
`animalType` varchar(15) NOT NULL default '',
`animalDesc` varchar(255) default NULL,
`animalPrix` decimal(9,2) default NULL,
`animalImage` varchar(15) default NULL,
PRIMARY KEY (`animalID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Voici le contenu de mon fichier ANIMAUX.TXT :
"Licorne";"cheval";"corne spiralée";"5000";"/images/licorne.jpg"
"Pégase";"cheval";"animal ailé";"8000";"/images/pegas.jpg"
"Lion";"chat";"grande taille";"2000";"/images/lion.jpg"
Voici la commande que je tape pour essayer d'insérer ce fichier TXT dans ma table :
LOAD DATA INFILE 'animaux.txt' INTO TABLE `animal`
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY ','
(`animalnom` , `animaltype` , `animaldesc` , `animalprix` , `animalimage`)
La réquête semble fonctionnée...
Et voici le résultat : commande = select * from animal
animalID / animalNom / animalType / animalDesc / animalPrix / animalImage
0 / Licorne / cheval / corne spiralée / 5000.00 / images/licorne
D'une part, il me manque les autres enregistrements...
D'autre part, le liens "/images/licorne.jpg" est tronqué a "licorne" sans l'extension...
Où peut se trouver mes erreurs ?