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

Développement Web en Java Discussion :

lire un fichier CSV et enregistrer dans la bdd


Sujet :

Développement Web en Java

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut lire un fichier CSV et enregistrer dans la bdd
    Bonsoir,
    je développe une application avec spring, struts2, hibernate.
    je souhaite importer un fichier et lire ses données pour qu'ensuite enregistrer ces données dans l'une des tables de ma base de données.
    pour importer et lire un fichier csv, j'utilise la bibiothèque opencsv.
    voila mon code
    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
     
    List<String[] >  data = new ArrayList<String[] >();
     
                FileReader fichierReader = new FileReader(fichier);
                CSVReader csvReader = new CSVReader(fichierReader, ';');
                String[] nextLine = null;
                while ((nextLine = csvReader.readNext()) != null) {
                    int size = nextLine.length;
     
                    // ligne vide
                    if (size == 0) {
                        continue;
                    }
                    String debut = nextLine[0].trim();
                    if (debut.length() == 0 && size == 1) {
                        continue;
                    }
     
                    // ligne de commentaire
                    if (debut.startsWith("#")) {
                        continue;
                    }
                    data.add(nextLine);
    maintenant, je veux enregistrer ces données dans la base de données, sachant que ma table contient des champs différents des champs de l’en-tête du fichier.

    champs du fichier.csv

    nom;prenom;motDePasse
    champs de la table :
    firstName, lastName;password
    comment faire pour cela?
    merci

  2. #2
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Tes champs sont dans l'ordre à l'intérieur du tableau, donc peu importe leurs noms. Tu créé une entité hibernate et tu lui passe les données dans l'ordre avant de la persister...
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut
    En fait, ma logique métier veut que le fichier importé comprend des champs différents des champs de la table soit différents par nom ou par nombre.
    alors l'application met en place ( après l'extraction de l’en-tête du fichier) un formulaire pour associer les champs du fichier à ceux de la table.
    Une fois cette association effectuée, j'envoie le formulaire pour donner suite à l'enregistrement des données, et c'est exactement l'étape qui me bloque, cad, j'arrive pas à faire cette correspondance entre les champs.

  4. #4
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Comme ça je comprend pas bien ou est le problème. Tu peux poster le code correspondant à cette association? Parce que la, pour moi, si tu as déjà des champs java pour lesquels tu connaît tu connais le contenu, il n'y a pas de problème. ..
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut
    Merci beaucoup Cafeinoman pour vos réponses,
    pour être plus clair je reprends, voila ce que je veux faire.
    étape 1: importer un fichier
    étape 2: lire les données du fichier
    étape 3: enregistrer ces données dans la bases de données
    pour l'étape 1 et 2 cça marche j'arrive à les passer.
    pour l'étape 3, on peux la décomposer en deux sous-étapes:
    sous-étape1: associer les champs du fichiers avec ceux de la table
    sous-étape2: entregistrer les données.
    Avant de procéder à l'enregistrement dans la base de données (cad sous-étape2), l'utilisateur doit remplir le formulaire suivant(voir le code) pour associer les champs de l’entête du fichier avec ceux de la table(sous-étape2).
    voila le formulaire:
    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
     
    <s:form action="associerChamps">
    	<c:forEach items="${sessionScope.data[0]}" var="champs">
    	<tr>
    		<td><c:out value="${champs}" /></td>
    		<td><s:combobox list="{'nom','prenom','motDePasse','telephone','ville'}"
    					name="champsTable" headerKey="-1" 
    					headerValue="--- Choisir un champs ---" />		
    		</td>
    	</tr>
     
    	</c:forEach>
    	<tr>
    		<td><s:submit name="Envoyer" value="Valider" />
    		</td>
    	/tr>
    </s:form>
    le problème actuel est le suivant:
    j'arrive pas à récupérer les valeurs des combobox
    voila un bout de code de mon action
    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
     
    private List<String> champsTable;
    public void setChampsTable(List<String> champsTable) {
    		this.champsTable = champsTable;
    	}
    	public List<String> getChampsTable() {
    		return champsTable;
    	}
    public String associerChamps(){
    		try {
    			//simple test pour récupérer les valeurs de combobox
    			for(int i=0;i<this.champsTable.size();i++){
    				System.out.println(this.champsTable.get(i));
    			}
     
    			return SUCCESS;
    		} catch (Exception e) {
    			return ERROR;
    		}
    	}

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut
    En fait les valeurs des éléments de la List<String> champsTable sont vides.

  7. #7
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Avec les morceau de codes que tu m'as mis ke ne vois pas d'erreur. Tu as contrôlé "visuellement" ta combobox pour vois si elle se remplis?
    Honnêtement je ne suis pas un habitué de struts2, donc si l'erreur est dans la syntaxe du formulaire je ne la vois pas. Essai peut être de poster les classes complète pour relire le "chemin" complet que tu fait parcourir à tes données...
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut
    effectivement, la combobox ne se remplit pas, pour tester, j'ajoute une combobox hors de la boucle forEach et là ça marche.
    alors l'erreur vient surement de création des combobox avec la boucle forEach.
    je suis toujours en recherche de la solution.

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut
    J'ai résolu le problème en changeant s:combobox par s:select
    Merci encore une fois pour vos réponses

  10. #10
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    De rien. Si tu peut poster le code fonctionnel, au cas ou quelqu'un ai le même type de problème, et passer en résolu, ce serait bien.

    Bon courage pour la suite.
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/10/2012, 13h01
  2. Importer un fichier CSV en arabe dans une BDD mysql
    Par oum87 dans le forum Administration
    Réponses: 3
    Dernier message: 21/09/2012, 17h17
  3. Réponses: 9
    Dernier message: 02/06/2009, 15h37
  4. [MySQL] Lecture fichier CSV et enregistrement dans la base
    Par tifsa dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/09/2008, 12h49
  5. Réponses: 2
    Dernier message: 02/09/2008, 14h17

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