Lire un .txt,specifier et après enregistrer dans une base Mysql

Fermé
jayzman - Modifié par KX le 10/12/2015 à 19:36
 jayzman - 11 déc. 2015 à 08:07
Bonjour,

je voudrai avoir un code qui peut lire un fichier .txt et après enregistrer dqns une base,j'ai dejà le code qui lit le fichier .txt mais je veut juste avoir le parametre dans le fichier,je ne sais pas m'exprimer mais je vous explique un peu
exemple:
fichier.txt
Heure            id                    table              CID                SRC
[08:15:01.285] /2271 (EVENT) internal-call-setup-fail (CID1=28158) (src-conf=0)
[08:15:06.23] /2271 (EVENT) internal-call-setup-fail (CID1=28158) (src-conf=0)
[08:15:08.123] /2271 (EVENT) internal-call-setup-fail (CID1=28158) (RNC1=2)


code java
 import java.io.*;
  import java.util.*; 
  import java.util.regex.Pattern; //<<<<<<<<<<<<<<<<<<<<<<<<

   class ADT    {
      
      public static void main(String[] args){ 
      
         String filePath = "D:\\Asa_zo\\macrogpeh\\GPEH_CALL_FAIL\\fichier.txt";
         String garder = "";
      
         try{ 
         
            BufferedReader buff = new BufferedReader(new FileReader(filePath)); 
         
            try { 
               String line; 
            // Lire le fichier ligne par ligne 
            // La boucle se termine quand la méthode affiche "null" 
            
            
               while ((line = buff.readLine()) != null) { 
                  System.out.println(line);
                  int index = line.indexOf("internal-call-setup-fail"); // exemple de partie commune des lignes à garder
                  if(index > 0) // si on trouve "table"
                     garder+= line + "|";
                
               }
             
               //System.out.println("\n\ngarder = " + "\"" + garder + "\"");
               
               Pattern pattern = Pattern.compile("\\|"); // import java.util.regex.Pattern;
               String[] tabGarder = pattern.split(garder); // pour mettre les lignes conservées 
                                                 // dans le tableau tabGarder
               
               System.out.println("");
     
     // Résultat:
               for(int i = 0; i < tabGarder.length; i++)
               {
                  String lGardee = tabGarder[i];
                  System.out.println("Trouvée: " + "\"" + lGardee + "\"");
               } // ... Jusqu'ici <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
            
               buff.close(); //Lecture fini donc on ferme le flux 
            } 
            
               catch (IOException e){ 
                  System.out.println(e.getMessage()); 
                  System.exit(1); 
               } 
         
         } 
            catch (IOException e) { 
               System.out.println(e.getMessage()); 
               System.exit(1); 
            } 
      } 
   }


et je voudrais savoir où je vais mettre le regex pour specifier et avoir le contenue que je veut,
Le Type est le nom de la table et le entre () est ses parametres.
merci
jayzman
A voir également:

1 réponse

KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
10 déc. 2015 à 20:20
Bonjour,

Si je prends :

String[] lines = {
    "[08:15:01.285]  /2271  (EVENT) internal-call-setup-fail  (CID1=28158) (src-conf=0)",
    "[08:15:06.23]   /2271  (EVENT) internal-call-setup-fail  (CID1=28158) (src-conf=0)",
    "[08:15:08.123]   /2271  (EVENT) internal-call-setup-fail  (CID1=28158) (RNC1=2)"
};

Tu peux faire simplement comme ceci :

for (String line : lines) {
    for (String part : line.split("\\s+"))
        System.out.println(part);
    System.out.println();
}

Ce qui donne :

[08:15:01.285]
/2271
(EVENT)
internal-call-setup-fail
(CID1=28158)
(src-conf=0)

[08:15:06.23]
/2271
(EVENT)
internal-call-setup-fail
(CID1=28158)
(src-conf=0)

[08:15:08.123]
/2271
(EVENT)
internal-call-setup-fail
(CID1=28158)
(RNC1=2)

Ou plus finement :

Pattern pattern = Pattern.compile("\\[(.*)\\]\\s+\\/(\\d+)\\s+\\((.*)\\)\\s+([^\\s]+)\\s+\\((.*)\\)\\s+\\((.*)\\)");

for (String line : lines) {
    Matcher matcher = pattern.matcher(line);
    if (matcher.find()) {
        for (int i = 1; i <= matcher.groupCount(); i++)
            System.out.println(matcher.group(i));
    }
    System.out.println();
}

Ce qui donne :

08:15:01.285
2271
EVENT
internal-call-setup-fail
CID1=28158
src-conf=0

08:15:06.23
2271
EVENT
internal-call-setup-fail
CID1=28158
src-conf=0

08:15:08.123
2271
EVENT
internal-call-setup-fail
CID1=28158
RNC1=2
0
Bonjour KX,
merci pour votre réponse ça a marché,
Et comment je fais pour l'enregistrer dans la base de donnée
Si le résultat est stocker dans un seul variable?
merci,
Jayzman
0