IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Importation Excel vers PostgreSQL


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2009
    Messages : 25
    Points : 13
    Points
    13
    Par défaut Importation Excel vers PostgreSQL
    Bonjour à tous !

    Je dois faire un programme en php permettant d'extraire les données d'un fichier Excel et les rentrés dans differentes tables pré-construites d'une BDD PostgreSQL.

    J'ai regarder pas mal de doc mais je n'ai pas réellement trouver des aides a mon probleme c'est pourquoi je post aujourd'hui.

    J'ai tenter un code qui me permet de rentrer un fichier ".txt" dans la base mais ca ne me satisfait pas vraiment :s

    J'aimerais avoir à éviter de passer par le ".txt" mais j'ai du mal à trouver par ou commencer.

    Voici mon code pour le moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    <?php
     
    	$nom_fichier="algo.txt"; 	// Nom du fichier a convertir
    	$separateur="\t";			// Sigle de séparateur
     
    		// Ouverture connection base SQL	
     
    			Require("Util.php");
     
    			$bd=new BD (NOM, PASSE, "import", SERVEUR, PORT);
     
    				// Creation tableau d’affichage
    				// Juste pour montrer que ca marche !
    				Echo "<table border=1>";
     
    					If(file_exists($nom_fichier))	// Si le fichier existe, on l’ouvre
    						$fp=fopen($nom_fichier, "r");
     
    					Else	// Sinon erreur
    					{
    						Echo  "Fichier introuvable<br>";
    						Exit();
    					}
     
    					While (!feof($fp)) 			// On parcours le fichier
    					{
    						$ligne=fgets($fp,4096); // On se deplace d’un ligne
    						$liste=explode($separateur,$ligne); // Champs séparés par une tabulation
     
    						// Ici important	
    							$col1=$liste[0];
    							$col2=$liste[1];
    							$col3=$liste[2];
    							$col4=$liste[3];
    							$col5=$liste[4];
    							$col6=$liste[5];	
    						// $coln correspond aux colonnes de la table créée auparavant
     
    					If(trim($col1)!="")	// Si fin fichier
    					{
    						Echo "<tr>";	
    					}
    						// Important dans la base SQL
    						$query="insert into fichier (col1, col2, col3, col4, col5, col6)";
    						$query="values('$col1','$col2','$col3','$col4','$col5', $'col6')";
    						$resul=pg_exec($query);
     
    					If(!$resul)
    					{
    						Echo "Impossible d’ajouter";
    					}
    					Else
    					{
    						Echo "import…ok";
    						Echo "</td>";
    						Echo "</tr>";
    					}
     
    						Pg_close($bd);		// Ferme SQL
    						Fclose($fp);		// Ferme fichier txt
     
    				Echo "<table>";	// Fin du tableau
     
    			Echo "Merci, importation terminée<br>";
    ?>
    Un de mes gros souci est qu'il ne permet pas d'importer dans différentes tables mais dans une seule et cela pose le problème d'avoir plusieurs fois les mêmes mots dans la BDD.
    Je bloque aussi sur le code qui permet d'inserer les données peu importe le nombre de lignes dans le fichier Excel :/

    Merci de votre aide,
    Yoite

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2009
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Je voit que personne a pour le moment de réponse ou de questions en ce qui concerne mon post.
    Je suis toujours dessus mais ce n'est pas très fructifiant, j'ai fait pas mal de test mais rien d'autre que le code du premier post.

    Mon plus gros soucis est d'arriver à extraire les données du fichier en faisant en sorte que " telle ligne telle colonne " aille dans " telle table " de la base !

    Si vous avez des questions ou même des petits bouts de réponses qui pourraient me mettre sur la voie n'hésitez pas !

    Merci

    Yoite

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Pour lire directement un fichier XLS avec PHP, tu peux essayer ça:
    http://sourceforge.net/projects/phpexcelreader/
    mais sans garantie, car le format xls est notoirement complexe à lire, en plus il y a de multiples versions, et il n'est documenté que depuis récemment.

    Pour insérer dans plusieurs tables, il n'y a pas de méthode générique, c'est toi qui sait quelle colonne correspond à quoi et donc dans quelle table aiguiller les données.

    Enfin pour ta dernière question:
    Je bloque aussi sur le code qui permet d'inserer les données peu importe le nombre de lignes dans le fichier Excel :/
    il faudrait décrire le problème que tu rencontres.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2009
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Bonjour et merci pour votre réponse.

    Pour ce qui est de la lecture du fichier, je pense utilisé un format .csv, une partie du code fournit dans mon premier post me le permet avec quelques modifs.

    Cependant je bute toujours sur le code qui me permettra justement de dire que la colonne 1 va dans la table "ma_table1", la colonne 2 va dans "ma_table2".
    De plus je dois aussi faire en sorte que , par exemple, la colonne 3 va dans "ma_table2" colonne "ma_colonne4".

    En fait il y a un module de recherche qui tourne sur un site en local et qui accède à la base pour aller chercher des choses assez précises, donc il faudrait que je puisse inserer les données du fichier, a des endroits specifiques. Et je ne voit pas comment faire

    Pour ce qui est de la dernière question, c'est parce que le fichier est mis a jour manuellement (ajout de données) et donc le nombre de lignes est modifié, mais finalement je ne pense pas que ce soit très grave étant donnée que l'on insère colonne par colonne.

    Merci
    Yoite

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Pour chacune des tables destination, il faut faire une requête INSERT spécifique qui insère la colonne ou les colonnes du fichier CSV dans la ou les colonnes de la table en question.
    Donc si tu as mettons 4 tables destination, tu vas avoir 4 requêtes INSERT qui vont être exécutées toutes les 4 pour chaque ligne du fichier CSV.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2009
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Mmh, je crois que je commence a comprendre le truc.
    Merci beaucoup, je regarde ca de plus près je fais des tests et je vous tient au courant !
    Merci

Discussions similaires

  1. Import Excel vers une base SQL Server / Framework 1.x
    Par myNonSpace dans le forum Windows Forms
    Réponses: 6
    Dernier message: 08/06/2007, 11h27
  2. import excel vers access avec bouton "parcourir"
    Par zeloutre dans le forum Access
    Réponses: 3
    Dernier message: 04/04/2007, 19h06
  3. importer les données de excel vers postgresql
    Par ebang dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 08/08/2006, 08h47
  4. échec importation excel vers access
    Par emmablue dans le forum Access
    Réponses: 2
    Dernier message: 31/07/2006, 11h34
  5. Import Excel vers Access +hypertexte
    Par liop49 dans le forum Access
    Réponses: 2
    Dernier message: 24/07/2006, 14h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo