Bonjour,

Pour un projet je gère plusieurs tables, dont 2 d'entre elles contiennent plus de 200000 lignes.

J'ai réussi tant bien que mal à écrire ce qui suit pour insérer des données dans ma table.
Pour cet exemple, le fichier texte comporte 3 colonnes et ma table 2 (LON et LAT).

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
string cs;
            SqlCommand sql_com = new SqlCommand();
            cs = "Data Source=L2I-P1-V\\SQLEXPRESS2008;Initial Catalog=MA_Base;Integrated Security=True";
 
            SqlConnection cx = new SqlConnection();
            cx.ConnectionString = cs;
            sql_com.Connection = cx;
            cx.Open();
            StreamReader sr = new StreamReader("C:\\Users\\2007-1681\\Desktop\\Test\\pres_00.txt");
            string line;
            String rq;
            string[] linesplit;
            line = sr.ReadLine();
            line = sr.ReadLine();
            while (line != null)
            {
                linesplit = line.Split(',');
                rq = "insert into dbo.LIEUX_RELEVES(LON,LAT) values(" + Single.Parse(linesplit[0]) + "," + Single.Parse(linesplit[1]) + ")";
 
                sql_com.CommandText = rq;
                //int updaterows = sql_com.ExecuteNonQuery();
                sql_com.ExecuteNonQuery();
                Console.WriteLine(line);
                line = sr.ReadLine();
            }
Avec ce script cela marche très bien, sauf qu'il faut plus de 7 min pour que la table se remplisse.

J'ai entendu parler de plusieurs alternatives pour réduire le temps de chargement, mais je ne sais pas trop comment m'y prendre.

BULKINSERT

Avec cette méthode, je ne sais pas comment lui dire de ne pas prendre en compte la derniere colonne de mon fichier texte, et du coup j'ai une erreur de générée. N'existe t il pas comme le fait FIRSTROW = '', une propriete pour sauter ou ignorer des colonnes ?

SQLBULKCOPY

Pour cette méthode, je n'ai compris que le nom, comment dois je procéder pour la tester. Est ce que c'est adaptable pour mon projet.

Construire une procédure stockée.

Pour cette dernière, j'avoue ne pas avoir commencé a chercher, mais est ce que cela pourrait m'aider.

Je vous remercie par avance de votre avis.

Cdt