Bonjour

Comme sugéré j'ai ajouté un PreparedStatement mais j'ai toujours le même pb à savoir qu'une fois les 10 à 20 000 lignes insérées je n'ai plus qu'à fermer et réouvrir eclipse pour pouvoir reprendre la main.
Ci-joint le code au cas ou quelqu'un aurait une idée
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
 
package librairie;
 
import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.regex .*;
 
public class Flux_2 {
 
	public static void main(Statement stmt, Connection conn, String fichier, String[] val) {	
		String nom_tbl = val[2];
		String sep_chp = val[3];
		String titre_col = val[4];
		String def_tbl = val[6];
		String[] num_chp = val[7].split("[|]");
		Integer nb_chp = 0;
		Integer cpt = 0;
		String sql = "";
		String valeur = "";
		//StringBuffer sql0 = new StringBuffer();
		//Iterator itersql = null;
		PreparedStatement pstmt = null;
		for(int i=0;i<num_chp.length;i++){sql += "?, ";}
		sql = sql.substring(0,sql.length()-2);
		try{pstmt = conn.prepareStatement("INSERT INTO "+nom_tbl+" VALUES ( "+sql+")");}	
		catch (final SQLException e){System.out.println("Flux_2.1: "+e);};
 
		if(val[8].equals("no_concat"))
			{//suppression de l'ancienne table
 
			}
 
		try
		   {InputStream ips=new FileInputStream(fichier);
			InputStreamReader ipsr=new InputStreamReader(ips);
			BufferedReader br=new BufferedReader(ipsr);
			String ligne;
 
			//lecture ligne à ligne
			while ((ligne=br.readLine())!=null) 
				{//nbre de colonnes dans la ligne importée la première ligne est prise comme référence
				 if(ligne.split("["+sep_chp+"]").length > nb_chp){nb_chp = ligne.split("["+sep_chp+"]").length;}
				 //découpage de la ligne suivant le séparateur SEP_CHP
				 //découpage
				 val = ligne.split("["+sep_chp+"]", 0);
				 //si la taille de val < nb_chp > ligne avec retour chariot
				 while(val.length<nb_chp)
				 	{ligne += br.readLine();
				 		 val = ligne.split("["+sep_chp+"]", 0);}
				 //si la ligne finit par le séparateur on ajoute " "
				 if(ligne.substring(ligne.length()-1, ligne.length()).equals(sep_chp))ligne=ligne+" ";
				 val = ligne.split("["+sep_chp+"]", 0);
				 //extraction et construction de la rqte d'insertion
				 for(int i=0;i<num_chp.length;i++)
				 	{valeur = val[Integer.parseInt(num_chp[i], 10)-1];
				 	 //if(valeur.equals("")||valeur.equals(" ")){valeur = null;}
//System.out.println(num_chp[i]+" - "+valeur);
				 	 pstmt.setString(i+1, valeur);}
				 //ajout au batch
					 pstmt.addBatch();
System.out.println("Sql: "+pstmt.toString());
				 //insertion du batch
				 if(++cpt == 1000)
				 	{//toutes les 1000 lignes j'execute le batch
					 pstmt.executeBatch();
					 pstmt.clearBatch();
					 conn.commit();
					 cpt = 0;}
				 }
			pstmt.executeBatch();
			pstmt.clearBatch();
			conn.commit();
			br.close();
			}
		catch (Exception e) {System.err.print("Flux_2.2:");e.printStackTrace();System.err.println();} 
 
	}
}
En argument sont envoyés le nom du fichier texte importé et les caractéristiques d'import