Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1635 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  CSV et MySQL ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

CSV et MySQL ...

n°589169
freed102
Arayashiki
Posté le 12-12-2003 à 15:28:49  profilanswer
 

tous les jours une question... aujourd'hui ça concerne l'importation de CSV dans une table MySQL...
 
quand je fais :
 
LOAD DATA LOCAL INFILE "D:/DATA/coursiers.csv" INTO TABLE coursiers;
 
Il me retourne :
 

Code :
  1. requête SQL : 
  2. LOAD DATA LOCAL INFILE "D:/DATA/coursiers.csv" INTO TABLE coursiers;
  3. MySQL a répondu:
  4. Load data disabled


 
... wot happened !!!
 
thx
 
Freed

mood
Publicité
Posté le 12-12-2003 à 15:28:49  profilanswer
 

n°589255
anapajari
s/travail/glanding on hfr/gs;
Posté le 12-12-2003 à 16:23:10  profilanswer
 

regarde du coté de la traduction de disabled ... :o


Message édité par anapajari le 12-12-2003 à 16:23:33
n°589257
freed102
Arayashiki
Posté le 12-12-2003 à 16:24:15  profilanswer
 

bah ça veut dire "desactivé"... mais why ????

n°589296
drasche
Posté le 12-12-2003 à 17:01:06  profilanswer
 

parce que ton build de MySQL ne supporte pas cette fonction?


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°589302
freed102
Arayashiki
Posté le 12-12-2003 à 17:03:32  profilanswer
 

Arf !! si c le cas... c'est le bad total !! j'ai pas envie de me taper toute la table à la main !!! Grrr !!! j'utilise PHPMYADMIN 2.2.42 ... donnée d'office par Online.net

n°589315
Mara's dad
Yes I can !
Posté le 12-12-2003 à 17:14:17  profilanswer
 

Code :
  1. LOAD DATA LOCAL INFILE '/tmp/phpYbXcQ2' INTO TABLE `test` FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'


 
Marche très bien chez Online ! ! !
Je viens de faire çà avec phpPyAdmin ! ! !
 
Contenu du fichier csv :  

"1";NULL
"2";NULL
"4";NULL
"5";NULL
"25";"12345.1234"
"26";"99999.9999"


 
Format de la table :

CREATE TABLE test (
  x tinyint(4) NOT NULL default '0',
  prix decimal(8,4) default NULL
) TYPE=MyISAM;


Message édité par Mara's dad le 12-12-2003 à 17:15:43

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°589449
freed102
Arayashiki
Posté le 12-12-2003 à 19:28:14  profilanswer
 

je viens de refaire exactement tes requetes (j'ai créé la même table que toi, j'ai fait un txt avec tes données... ya juste le chemin qui est different... et j'ai la même reponse :
 
 

Code :
  1. Erreur
  2. requête SQL : 
  3. LOAD DATA LOCAL INFILE 'D:\\DATA\\test.txt' INTO TABLE `test` FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'
  4. MySQL a répondu:
  5. Load data disabled
  6. Retour

n°589459
Mara's dad
Yes I can !
Posté le 12-12-2003 à 19:44:53  profilanswer
 

Envoie un mail à online :/
T'aurras peut-être une réponse dans 1 semaine...
Sinon, tu te fais un script PHP qui importe les données.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°591028
impulse
Posté le 15-12-2003 à 12:23:14  profilanswer
 

Mara's dad a écrit :

...
Sinon, tu te fais un script PHP qui importe les données.


 
Un truc dans ce style peut etre :
 

Code :
  1. <?php
  2. $csvfile = 'd:\Temp\csv.csv';
  3. $sqlfile = 'd:\Temp\sql.sql';
  4. $table = 'my_table';
  5. $lines = file($csvfile);
  6. $handle = fopen($sqlfile, 'w');
  7. foreach ($lines as $line)
  8. {
  9.     $line = preg_replace('/;/', ',', trim($line));
  10.     $query = "INSERT INTO `$table` VALUES ($line);\n";
  11.     fwrite($handle, $query);
  12. }
  13. fclose($handle);   
  14. ?>


 
EDIT : et apres tu importes les données du dump => mysql -umyuser -p < sql.sql.


Message édité par impulse le 15-12-2003 à 12:24:58
n°591340
freed102
Arayashiki
Posté le 15-12-2003 à 19:27:51  profilanswer
 

je ne comprends pas trop ça : mysql -umyuser -p
 
j'ai essayé ta technique mais j'ai toujours rien dans ma base... pas de message d'erreur cependant!

mood
Publicité
Posté le 15-12-2003 à 19:27:51  profilanswer
 

n°591357
Mara's dad
Yes I can !
Posté le 15-12-2003 à 20:29:20  profilanswer
 

impulse a écrit :

EDIT : et apres tu importes les données du dump => mysql -umyuser -p < sql.sql.


Il est chez online !
Il n'as pas accès à la console.
 
Celà si il sait executer une requête MySql en PHP, y'a pas grand chose à changer dans ton script pour importer les données :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°591567
impulse
Posté le 16-12-2003 à 09:15:54  profilanswer
 

freed102 a écrit :

je ne comprends pas trop ça : mysql -umyuser -p
 
j'ai essayé ta technique mais j'ai toujours rien dans ma base... pas de message d'erreur cependant!


 
Ah. Ben au lieu d'ecrire chaque INSERT dans le fichier dump tu executes la requete directement avec mysql_query(). Ou sinon tu peux aussi utliser PHPMyAdmin, si il est dispo, pour importer le dump.

n°591652
freed102
Arayashiki
Posté le 16-12-2003 à 11:40:20  profilanswer
 

oui j'utilise PHPMyAdmin ... Mais je sais pas comment on utilise ta syntaxe... (sorry je debute grave en MySQL)

n°591677
impulse
Posté le 16-12-2003 à 12:00:08  profilanswer
 

1. tu as essayé d'importer ton csv avec PHPMyAdmin? Il y a 2 options pour charger les données (DATA ou DATA LOCAL). DATA LOCAL n'a pas l'air de fonctionner chez toi mais peut etre que DATA pourrait fonctionner. Pour tester avec PHPMyAdmin tu choisis la bd puis tu cliques sur la table et tu as une option "insert data from a textfile into table" tout en bas de la page.
 
2. si ça ne marche pas tu peux utiliser PHPMyAdmin pour executer les requetes que tu as créées et qui sont dans le fichier dump (sql.sql dans mon exemple). Il doit y avoir une option pour charger un dump et l'executer, regarde dans la doc de PHPMyAdmin.  

n°591689
freed102
Arayashiki
Posté le 16-12-2003 à 12:12:14  profilanswer
 

j'ai essayé un copier coller de slq.sql directement dans PHPMyAdmin... Mais ça ne marchait pas..
j'ai donc changé un peu ta formule magique :

Code :
  1. foreach ($lines as $line)
  2. {
  3.     $line = preg_replace("/;/", "','", trim($line));
  4.     $query = "INSERT INTO `$table` VALUES ('$line');\n";
  5.     fwrite($handle, $query);
  6. }


 
(j'ai rajouté des quotes)... maintenant ça marche ... mais au bout d'un moment j'ai une erreur...  

Code :
  1. [...]
  2. INSERT INTO `coursiers` VALUES ('Les Muraux','78130','25');
  3. INSERT INTO `coursiers` VALUES ('L'Etang la ville','78620','17')
  4. MySQL a répondu:
  5. You have an error in your SQL syntax near 'Arcy','78390','15');
  6. INSERT INTO `coursiers` VALUES ('Bougival','78380','9');
  7. ' at line 1


 
ya un conflit dans la syntaxe... je vais chercher ce que c !

n°591691
freed102
Arayashiki
Posté le 16-12-2003 à 12:14:48  profilanswer
 

c donc un conflit avec les apostrophes... comment eviter cela... ???

n°591698
freed102
Arayashiki
Posté le 16-12-2003 à 12:23:55  profilanswer
 

Et voila !!
 
j'ai rechangé ta formule magique en :
 

Code :
  1. foreach ($lines as $line)
  2. {
  3.     $line = preg_replace('/;/', '","', trim($line));
  4. $line = '"'.$line.'"';
  5.     $query = "INSERT INTO `$table` VALUES ($line);\n";
  6.     fwrite($handle, $query);
  7. }


 
Tout à fonctionné !
 
Thanx !!!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  CSV et MySQL ...

 

Sujets relatifs
MysqlDoublon dans des table mysql
Comment recréer les grant tables MySQL Windows ?requete en mysql a trier
requete MySql par tranches...[SGBD][Mysql] Trouver des cles inexistantes
[PHP/MySQL] Prob de récup du résultat d'une requeteputainde clefs etrangeres en mysql
CSV vers MySLQCSV -> MySQL espaces dans chiffres [Problem Regled]
Plus de sujets relatifs à : CSV et MySQL ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR