utilisation de commande shell a partir du php

Invité
Invité n'ayant pas de compte PHPfrance

29 avr. 2008, 16:14

Bonjour,

C'est une question toute con, j'aimerai pouvoir faire des extraction de donné directement a partir de mon code php. Mais je n'ai aucune idée de si c'est possible. J'aimerai donc savoir si il est possible d'insérer dans mon code php des commandes mysqldump, LOAD DATA INFILE. Et de quel manière procéder.

Merci

ViPHP
ViPHP | 5924 Messages

29 avr. 2008, 18:08

Pour mysqldump, tu peux regarder vers les fonctions d'exécution système :
exec(), system(), shell_exec(), …
Tu exécutes ta commande via une de ces fonctions et elle te rend (selon la fonction, la manière changera) le dumping de ta base dans une chaine de caractère, tu n'as plus qu'à la traiter et/ou l'afficher. Attention tout de même, à savoir que ces fonctions peuvent être désactivées par certaines configurations…

Pour LOAD DATA INFILE, cela t'oblige à gérer des fichiers temporaires, personnellement je ne l'ai jamais utilisé, je te conseillerais plutôt la première solution.

Invité
Invité n'ayant pas de compte PHPfrance

30 avr. 2008, 09:43

merci, je vais regarder. Pour load data infile j'ai regardé ce post : http://www.phpfrance.com/forums/voir_reponse-245434.php et cela marche comme je souhaite, ou presque(j'essai de trouvé une solution car mes champs ne sont pas dans le même ordre entre mon fichier et ma base).

merci

Invité
Invité n'ayant pas de compte PHPfrance

30 avr. 2008, 10:32

donc j'essaie d'adapter a mon cas; j'ai fait :
'LOAD DATA LOCAL INFILE \'C:/classeur.csv\' 
        REPLACE INTO TABLE `enquete` (`num_client`, `date_enq`, `nb_passage_id`)
            FIELDS TERMINATED BY \';\' 
            ENCLOSED BY \'"\' 
       		LINES TERMINATED BY \'\\r\\n\' 
            IGNORE 0 LINES';
cela ne fonctionne pas.
mais avec :
'LOAD DATA LOCAL INFILE \'C:/classeur.csv\' 
        REPLACE INTO TABLE `enquete` 
            FIELDS TERMINATED BY \';\' 
            ENCLOSED BY \'"\' 
       		LINES TERMINATED BY \'\\r\\n\' 
            IGNORE 0 LINES';
cela fonctionne.
Pourtant sur http://dev.mysql.com/doc/refman/5.0/en/load-data.html il est bien indiquer que l'on peux signaler le nom des colonnes correspondant au fichier csv.

merci davance

Invité
Invité n'ayant pas de compte PHPfrance

30 avr. 2008, 10:33

j'oubliais mon message d'erreur :
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 'FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES TERMINAT' at line 3