SQLite大批量插入性能优化
生活随笔
收集整理的這篇文章主要介紹了
SQLite大批量插入性能优化
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
SQLite作為輕量級(jí),零安裝的數(shù)據(jù)庫(kù),用在小型桌面應(yīng)用程序上特別合適。
網(wǎng)上搜了一下,貌似在程序中無(wú)法直接從格式化文本或CSV文件導(dǎo)入SQLite,只能逐條insert,這一點(diǎn)比起SQL SERVER就差了一些。
好在SQLite經(jīng)過(guò)優(yōu)化后大批量插入速度也還可以,方法就是事務(wù)+參數(shù)化,直接上代碼。
string strconn = System.Configuration.ConfigurationManager.ConnectionStrings["SQLConnectionString"].ConnectionString;using (SQLiteConnection con = new SQLiteConnection(strconn)){con.Open();using (SQLiteTransaction trans = con.BeginTransaction()){using (SQLiteCommand cmd = new SQLiteCommand(con)){cmd.Transaction = trans;try{using (FileStream fs = File.OpenRead("*.txt")){using (StreamReader sr = new StreamReader(fs)){string sline;string []arr;string str;rCount = 0;while(!sr.EndOfStream){sline = sr.ReadLine();arr = sline.Split(',');str = "INSERT INTO XXXTABLE (A,B,C,D,E,F,G,H,I,J) VALUES(@A,@B,@C,@D,@E,@F,@G,@H,@I,@J)";cmd.CommandText = str;cmd.Parameters.AddWithValue("@A", arr[0]);cmd.Parameters.AddWithValue("@B", arr[1]);cmd.Parameters.AddWithValue("@C", arr[2]);cmd.Parameters.AddWithValue("@D", arr[3]);cmd.Parameters.AddWithValue("@E", arr[4]);cmd.Parameters.AddWithValue("@F", arr[5]);cmd.Parameters.AddWithValue("@G", arr[6]);cmd.Parameters.AddWithValue("@H", arr[7]);cmd.Parameters.AddWithValue("@I", arr[8]);cmd.Parameters.AddWithValue("@J", arr[9]);cmd.ExecuteNonQuery();rCount = rCount + 1;}}}trans.Commit();//5,清空txtSystem.IO.File.WriteAllText(path + "*.txt", "", System.Text.Encoding.Default);}catch(Exception ex){rCount = 0;trans.Rollback();}}}}?
轉(zhuǎn)載于:https://www.cnblogs.com/hryan/p/7988750.html
總結(jié)
以上是生活随笔為你收集整理的SQLite大批量插入性能优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 详细介绍如何在Eclipse中使用SVN
- 下一篇: 数据库——索引