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

Java Discussion :

insérer dans MySQL depuis un fichier Excel


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Etudiante
    Inscrit en
    Avril 2012
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Avril 2012
    Messages : 203
    Par défaut insérer dans MySQL depuis un fichier Excel
    Bonjour,

    je veux insérer depuis un fichier dans une base de donnée MySQL , le problème c'est que je veux insérer à partir d'une ligne bien précise (ligne 22);
    puisque le début du fichier ,il n'y a que des informations secondaire sur le contenu, en plus de ça les champs de ce fichier n'on aucun titre , c-à-d juste des valeurs numérique séparés par des tabulation .

    j'ai déjà trouvé un code ci dessous qui fait l'insertion d'un fichier(depuis le début du fichier) , mais qu'on connait le titre de chaque champ.
    comment peux-je l'adapter à ma situation ?
    et merci d'avance

    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    public class DemogData {
     
    	private String filePath;
    	connexion cnx;
    	private String NEType;
    	private String NEName;
    	private String NEIP;
    	private String Operator;
    	private String Terminal;
    	private Timestamp MMLStartTime;
    	private Timestamp MMLEndTime;
    	private String result;
    	private String MML;
    	private String Message;
    	private String Domain;
     
    	public DemogData(String filePath) throws IOException {
    		super();
    		this.filePath = filePath;
    		cnx = new connexion("bdd");
    		parseFile();
    	}
     
    	private void parseFile() throws IOException {
    		BufferedReader reader = new BufferedReader(new FileReader(filePath));
     
    		String line = null;
    		StringTokenizer splitter;
     
    		String s = "";
    		String[] ss = new String[2];
     
    		while ((line = reader.readLine()) != null) {
    			if (line.equals(""))
    				;
    			else {
    				s = line.trim();
    				ss = line.split(":", 2);
    				ss[0] = ss[0].trim();
    				// ss[1] = ss[1].trim();
    				System.out.println("<===> " + line + " ==== " + ss[0] + ss[1]);
    				if (ss[0].equals("NEType")) {
    					NEType = ss[1];
    				}
    				if (ss[0].equals("NEName")) {
    					NEName = ss[1];
    				}
    				if (ss[0].equals("NEIP")) {
    					NEIP = ss[1];
    				}
    				if (ss[0].equals("Operator")) {
    					Operator = ss[1];
    				}
    				if (ss[0].equals("Terminal")) {
    					Terminal = ss[1];
    				}
    				if (ss[0].equals("MMLStartTime")) {
    					MMLStartTime = ss[1];
    				}
    				if (ss[0].equals("MMLEndTime")) {
    					MMLEndTime = ss[1];
    				}
    				if (ss[0].equals("result")) {
    					result = ss[1];
    				}
    				if (ss[0].equals("MML")) {
    					MML = ss[1];
    				}
    				if (ss[0].equals("Message")) {
    					Message = ss[1];
    				}
    				if (ss[0].equals("Domain")) {
    					Domain = ss[1];
    					cnx.insert(NEType, NEName, NEIP, Operator, Terminal,MMLStartTime, MMLEndTime, result, MML, Message,Domain);
    				}
    			}
     
    		}
     
    	}
     
    }

  2. #2
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    C'est bien, tu as réussi a repomper un code. Maintenant, reste la partie (très) dure : mettre en place un compteur et compter jusqu'à 22. Attention, il y a un piège : il ne faut s'arreter ni à 21, ni à 23.

    Mais si tu attends encore un peu, peut etre quelqu'un te sortira le code tout cuit. Comme ca, meme pour ajouter un pauve compteur, tu n'auras rien eu à faire...

  3. #3
    Membre éclairé
    Femme Profil pro
    Etudiante
    Inscrit en
    Avril 2012
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Avril 2012
    Messages : 203
    Par défaut
    le code concerne un autre fichier que connait le titre de chaque colonne (par exemple : NEType....)
    mais le fichier sur lequel je travaille il n'y a aucune indication sur le nom de chaque colonne , ci jointe une capture(Excel) sur le fichier : Nom : Capture.PNG
Affichages : 114
Taille : 26,1 Ko

    j'ai besoin de vos conseils

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 149
    Par défaut
    Comme t'as dis hwoarang, utilise un compteur pour parcourir ton fichier jusqu'à la ligne 22 puis fais les modifications à faire sur celle-ci...

  5. #5
    Membre éclairé
    Femme Profil pro
    Etudiante
    Inscrit en
    Avril 2012
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Avril 2012
    Messages : 203
    Par défaut
    voilà ce que j'ai essayé de faire , mais ça ne marche pas , vos remarques svp
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    package ne;
     
    import java.io.*;
    import java.util.Scanner;
    import java.util.StringTokenizer;
     
    public class InsertToMySql {
     
     
    	private String filePath;
    	connexion cnx;
    	private String champ0;
    	private String champ1;
    	private String champ2;
    	private String champ3;
    	private String champ4;
    	private String champ5;
    	private String champ6;
    	private String champ7;
    	private String champ8;
     
     
    	public InsertToMySql(String filePath) throws IOException {
    		super();
    		this.filePath = filePath;
    		cnx = new connexion("essai");
    		//parseFile();
    	}
     
    	private void parseFile() throws IOException {
    		//BufferedReader reader = new BufferedReader(new FileReader(filePath));
    		Scanner sr = new Scanner( new BufferedReader( new FileReader(filePath) ) ); 
     
    		int cpt = 0; 
    		String line = null;
    		StringTokenizer splitter;
     
    		String s = "";
    		String[] ss = new String[9];
     
     
    		for( cpt = 0 ; cpt <= 22 ; cpt++){
    			 line = sr.nextLine();
    		}   
    		String line23 = line;
     
    		while ((line23 = sr.next()) != null) {
     
    			if (line23.equals(""))
    				;
    			else {
    				s = line23.trim();
    				ss = line23.split("	",9);// le séparateur est une tabulation 
     
    				ss[0] = ss[0].trim();
     
    				champ0 = ss[0];
    				champ1 = ss[1];
    				champ2 = ss[2];
    				champ3 = ss[3];
    				champ4 = ss[4];
    				champ5 = ss[5];
    				champ6 = ss[6];
    				champ7 = ss[7];
    				champ8 = ss[8];
     
    			//System.out.println("<===> " + ss[0] + ss[1] + ss[2] + ss[3] + ss[4] + ss[5] + ss[6] + ss[7] + ss[8] );
     
     
    					cnx.insert(champ0 , champ1 , champ2 , champ3 , champ4 , champ5 , champ6 , champ7 , champ8);
    				}
    			}
     
     
     
     
    }
     
    }

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu lis 23 lignes, puis tu recommences la lecture sur la 24ième (sans traiter la ligne 23) en lisant le premier token (le début de la ligne jusqu'au premier whitespace). Comme la tabulation est un whitespace, tu lis la première "colonne", que tu cherches à parser comme une ligne entière, en utilisant un séparateur qui n'est par une tabulation, mais une suite d'espaces. Dans ta question, tu parles d'insérer à partir de la ligne 22, et là, il semble que tu veuilles insérer à partir de la ligne 23 (et tu le fais à partir de la 24) : c'est 22 ou 23 ?

    Pourquoi utiliser un Scanner, alors que BufferedReader fournit la méthode readLine suffisante pour lire des lignes ?
    On ne devrait jamais appeler next() de Scanner, sans avoir appeler au préalable hasNext(), sous peine de risque d'obtenir une erreur NoSuchElementException. Ce qui sera ton cas, puisqu'il n'y a pas de condition d'arrêt particulière qui ferait qu'on lise le fichier partiellement.

    au lieu d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (line23.equals(""))
    				;
    else {
    }
    tu peux écrire, plus élégament, à mon avis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (!"".equals(line23)) {
    }
    Pourquoi faire
    et ne jamais traiter s ?

    Enfin, tu ne fermes pas ton BufferedReader !

    Quand on t'a parlé de compteur, je pense qu'on pensait à une solution de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int numLigne=0;
    String ligne;
    while(  (ligne=bufferedReader.readLIne())!=null ) {
        numLigne++;
        if (numLigne>21) { // les 21 premières lignes sont ignorées (si c'est 22, il suffit de remplacer 21 par 22)
            ... traiter la ligne 
        }
    }
    Pour découper une chaîne d'éléments séparés par des tabulations on utilise le caractère tabulation (\t).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. [AC-2007] Insérer des données d'un fichier Excel dans et depuis Access
    Par Blado_sap dans le forum VBA Access
    Réponses: 9
    Dernier message: 25/01/2015, 18h57
  2. Insérer dans Mysql depuis un tableau
    Par Anibel dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/01/2013, 14h00
  3. [MySQL] Insérer le contenu d'un fichier Excel dans une base de donnée Mysql
    Par ghir_ana dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/07/2011, 15h46
  4. Réponses: 5
    Dernier message: 26/11/2008, 11h03
  5. Réponses: 1
    Dernier message: 30/12/2007, 14h51

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