Bonjour,
Je recherche un moyen rapide pour convertir une table DBF en SQLLite.
De csv en SQLLite j'utilise le CSVReader de LumenWoks, l'ensemble est ultra rapide avec les requêtes paramétrée.
J'ai essayé de même avec DBF vers SQLLite comme ceci :
Code C# : 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 cnn.Open(); //Preparing parameters and insert query //<-- String[] paramFields = new string[headers.Length]; for (int hdrCpt = 0; hdrCpt < headers.Length; hdrCpt++) { paramFields[hdrCpt] = "?"; } string sqlInsert = String.Format(@"INSERT INTO {0} ([{1}]) VALUES ({2})", tableName.Replace(fl.Extension, ""), myFields, string.Join(",", paramFields)); SQLiteCommand cmdInsert = new SQLiteCommand(); cmdInsert.CommandText = sqlInsert; cmdInsert.Connection = cnn; //--> //Création du tableau de paramètres //<-- SQLiteParameter[] Params = new SQLiteParameter[headers.Length]; for (int hdrCpt = 0; hdrCpt < headers.Length; hdrCpt++) { Params[hdrCpt] = cmdInsert.CreateParameter(); cmdInsert.Parameters.Add(Params[hdrCpt]); } //--> #region scann record int nbErr = 0; string sqlInsertion = ""; OleDbDataAdapter adapter2 = new OleDbDataAdapter(sqlInsertion, cnn); foreach (DataRow row in dbfContent.Rows) { string[] inputRow = new string[dbfContent.Rows.Count]; try { for (int hdrCpt = 0; hdrCpt < headers.Length; hdrCpt++) { Params[hdrCpt].Value = row[hdrCpt]; } cmdInsert.ExecuteNonQuery(); ...
Mais c'est terriblement lents.
Auriez vous une idée?
Je pensait à truc du style dataadapter.update() mais les idées précises me manquent.
Merci de votre aide.
Cordialement,
GillesM
Partager