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

Entrée/Sortie Java Discussion :

bdd MySQL ==> gros fichier plat, csv


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 52
    Points : 53
    Points
    53
    Par défaut bdd MySQL ==> gros fichier plat, csv
    Bonjour,
    je souhaite exporter une sélection d'une BDD MySQL vers un fichier plat csv, les champs doivent être séparer par des points virgules.
    Donc je fais ma sélection, et j'écris les enregistrements sur un fichier ligne par ligne.
    voila le code ke j'utilise pour l'ecriture:
    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
     
    public void save(Vector<String> vecteur)
    	   {
     
    		   try
    		   { FileWriter lu = new FileWriter("toto.txt",true);
    		   //Créer un objet java.io.FileWriter avec comme argument le mon du
    		   //fichier dans lequel enregsitrer
    		      BufferedWriter out = new BufferedWriter(lu);
    		      //Mettre le flux en tampon (en cache)
    		      String ecrir = join(";",vecteur);
    		      out.write(ecrir+NEW_LINE);
     
    		   //Balancer dans le flux le contenu de la zone de texte
    		      out.close(); // Fermer le flux (c’est
    		   //toujours mieux de le fermer explicitement)
    		    } catch (IOException er) {;}
     
     
    	   }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public static String join(String separator, Vector<String> a){
    	    StringBuffer buffer = new StringBuffer("");
     
    		  for (int i=0 ; i<a.size() ; i++){
    		    buffer.append(a.elementAt(i));
    		    if (i + 1 < a.size()){
    		      buffer.append(separator);
    	      }
    		   }
     
    		  return buffer.toString();
    	  }
    Mon problème, c'est que je fais une sélection de plus de 100 000 enregistrements, et ça me prend beaucoup de temps pour l'écrire sur un fichier.

    Pouvez vous me donner une technique, une stratégie ou API pour une écriture plus rapide???

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Augmente la taille du buffer d'écriture.
    Fait aussi un test sans aucune écriture disque pour vérifier le temps mis par la base de données. C'est peut-être elle qui prend le plus de temps.
    C'est quoi, pour toi, "beaucoup de temps" ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

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

Discussions similaires

  1. quel logiciel pour faire du SQL sur des GROS fichiers bruts (csv)?
    Par flipo44 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 24/06/2010, 17h59
  2. extraction en fichier plat (csv) d'une base oracle sous unix
    Par djfredou dans le forum Import/Export
    Réponses: 0
    Dernier message: 21/01/2010, 15h26
  3. Réponses: 2
    Dernier message: 16/11/2009, 15h23
  4. générer un fichier xml à partir d'un gros fichier plat
    Par ybennani dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 16/05/2007, 11h47
  5. Réponses: 13
    Dernier message: 24/10/2006, 15h17

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