importation d'une BDD

importation d'une BDD - PHP - Programmation

Marsh Posté le 23-05-2008 à 10:21:36    

est il possible d'importer dans une BDD les lignes contenues dans un fichier excel??
Il doit falloir le meme nombre de colonne/entité dans chaque je pense mais pas de pb...
comment faire ?? et comment mettre la BDD a jour en ne modifiant que le document excel??
   

Reply

Marsh Posté le 23-05-2008 à 10:21:36   

Reply

Marsh Posté le 23-05-2008 à 10:34:26    

clem1138 a écrit :

est il possible d'importer dans une BDD les lignes contenues dans un fichier excel??
Il doit falloir le meme nombre de colonne/entité dans chaque je pense mais pas de pb...
comment faire ?? et comment mettre la BDD a jour en ne modifiant que le document excel??


Quel SGBD ? Quelle est la finalité ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 23-05-2008 à 10:36:43    

ben justement le pb c'est que ca concerne mysql..et nn pas access...Et c'est pour un organigramme parce que mon algo ne marche qu'avec un tableau excel

Reply

Marsh Posté le 23-05-2008 à 10:48:12    

voici ma fonction pour lire mon fichier csv(il faut que tu transforme ton fichier excel en csv)

Code :
  1. function read_csv( $filename, $separateur)      // transfert le fichier dans un tableau
  2. {
  3. if ( $FILE=fopen($filename,"r" ) )               // ouverture du fichier
  4. {
  5.  while ($ARRAY[]=fgetcsv($FILE,1024,$separateur));      // lire ligne par ligne et coupe colonne par colonne
  6.  fclose($FILE) ;                              // ferme le fichier
  7.  array_pop($ARRAY);                                    // efface la derniere ligne
  8.  return ($ARRAY) ;                              // renvoie le tableau
  9. }else{ /* le fichier n'existe pas */
  10.       echo "Fichier introuvable !<br>Importation stoppée.";
  11.       exit();
  12.  }
  13. }


 
apres il suffit que tu fasse l'insertion dans ta bd,  
 

Code :
  1. par exemple si tu as ton fichier
  2. 15 paris
  3. 20 marseille
  4. for($i=0;$i<count($array);$i++){
  5. insert into tatable (nombre, ville) values ($array[$i][0],$array[$i] [1])
  6. }


bon j'espere que tu comprendra

Message cité 1 fois
Message édité par infoman64 le 23-05-2008 à 11:06:31
Reply

Marsh Posté le 23-05-2008 à 10:48:51    

Le plus simple : enregistrer sous .csv puis importation dans mysql....
 
Aprés dans la même veine mais un peu plus automatique :  


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 23-05-2008 à 11:00:59    

ok jai compris ....le probleme c'est le temps d'execution...je ne sais pas combien de lignes je vais avoir mais surement plusieurs centaines...et si a chaque fois que mon admin rajoute une ligne dans excel il doit mettre a jour comme cela ca va prendre tres lontps...a moin que l'on puisse rajouter que les lignes nouvelles ou les lignes modifiées????

Reply

Marsh Posté le 23-05-2008 à 11:05:20    

moi j'utilise cette méthode pour rajouter defois des milliers de lignes
çà prend trente seconde (un peu plus peut etre mais c'est super rapide)
 
aprés a toi de faire une boucle pour les insérer toutes, et de faire une vérification pour eviter de mettre des données en double

Reply

Marsh Posté le 23-05-2008 à 11:08:16    

ok je pensais que ca allait prendre beaucoup plus lontemps que ca.....ok ben c cool alors merci

Reply

Marsh Posté le 23-05-2008 à 11:56:46    

infoman64 a écrit :

voici ma fonction pour lire mon fichier csv(il faut que tu transforme ton fichier excel en csv)
...


Ou alors plutôt que de réinventer la roue (sachant qu'en plus celle là est cassée vu que la requête SQL pète à cause des quotes), on utilise les fonctions fournies par le sgbd, http://dev.mysql.com/doc/refman/5.0/en/load-data.html :

Code :
  1. LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
  2.  FIELDS TERMINATED BY ',' ENCLOSED BY '"'
  3.  LINES TERMINATED BY '\n';



---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 23-05-2008 à 12:07:02    

oui tout a fait, je sais trés bien  
mais je réinvente rien, moi j'utilise cette fonction car je fait d'autre traitement derrière,je balance pas directement dans la bd
et la requête j'ai juste marqué pour qu'il comprenne le système, (tout simplement)

Reply

Marsh Posté le 23-05-2008 à 12:07:02   

Reply

Marsh Posté le 26-05-2008 à 09:17:51    

je dois bien mettre ces lignes dans une requette sql a l'interieur de la page que je genere ???

Reply

Marsh Posté le 26-05-2008 à 15:51:19    

j'ai un ptit probleme encore....en executant ca directement dans php_my_admin l'importation se fait tres bien par contre avec une requette sql dans un script php et bien rien ne s'ajoute a la BDD...pourtant il n'y a aucune erreur de sql renvoyée

Reply

Marsh Posté le 26-05-2008 à 16:50:33    

personne a une idée serieu??

Reply

Marsh Posté le 26-05-2008 à 17:34:36    

Pb de droits entre le login que tu utilises pour phpmyadmin (root par défaut) et le login que tu utilises pour te connecter à ta BDD, maybe ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 26-05-2008 à 17:36:46    

je suis en local....pas ce pb

Reply

Sujets relatifs:

Leave a Replay

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