Insérer le contenu d'un fichier TXT dans une table...

Insérer le contenu d'un fichier TXT dans une table... - SQL/NoSQL - Programmation

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 ?
;)

Reply

Marsh Posté le 28-04-2005 à 14:26:52   

Reply

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...

Reply

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 ;)

Reply

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.

Reply

Marsh Posté le 28-04-2005 à 14:52:24    

Ca fait pas beaucoup, seulement 25 pour un nom de fichier :/ on sait jamais :(

Reply

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 ','
 
Bref, commence par relire ce que t'as fait ;)


 
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...
 
 :??:

Reply

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...  :)

Reply

Marsh Posté le 28-04-2005 à 15:13:42    

c'est quoi comme bouquin


---------------
http://www.blastmanu.info
Reply

Marsh Posté le 28-04-2005 à 15:16:00    

PHP et MySQL pour les nuls.

Reply

Marsh Posté le 28-04-2005 à 15:39:55    

cto a écrit :

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...
 
 :??:


 
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".

Reply

Marsh Posté le 28-04-2005 à 15:39:55   

Reply

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
 
???


Message édité par cto le 28-04-2005 à 16:46:57
Reply

Marsh Posté le 28-04-2005 à 16:45:02    

jette ton bouquin... :D

Reply

Marsh Posté le 28-04-2005 à 17:46:49    

Jotunheim a écrit :

jette ton bouquin... :D


Ce n'est pas le bouquin qui est en cause c'est moi lol
Mais cette réponse ne m'aide pas...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed