有大約這裏400 MB .txt文件由分隔插入數據「|」。在C#中使用Windows窗體,我將.txt文件的每一行插入到SQL服務器數據庫的表中。從文本文件到SQL服務器(?速度法)
我在做什麼是簡單,就是(縮短了「......」爲了簡潔):
while ((line = file.ReadLine()) != null)
{
string[] split = line.Split(new Char[] { '|' });
SqlCommand cmd = new SqlCommand("INSERT INTO NEW_AnnualData VALUES (@YR1984, @YR1985, ..., @YR2012)", myconn);
cmd.Parameters.AddWithValue("@YR1984", split[0]);
cmd.Parameters.AddWithValue("@YR1985", split[1]);
...
cmd.Parameters.AddWithValue("@YR2012", split[28]);
cmd.ExecuteNonQuery();
}
現在,這是工作,但一段時間服用。這是我第一次用大量的數據做任何事情,所以我需要確保:A)我以高效的方式做到這一點,B)我的期望不是太高。
使用SELECT COUNT()
,而循環是怎麼回事,我可以看數量上去了一段時間。所以我用了一個時鐘和一些基本的數學來確定事物的運行速度。 在60秒內,有73881個插入。這是每秒1231個插入。問題是,這是一個平均速度,還是我表現不佳?如果是後者,我能做些什麼來提高性能?
我看過一些關於SSIS是有效的用於這一目的完全吻合。但是,我需要通過單擊Windows窗體中的按鈕來執行此操作,而不是通過SISS。
這正是我所需要的。起初我有一個問題,因爲有太多的數據,我得到OutOfMemory異常,但這篇文章讓我走上了正確的道路:http://stackoverflow.com/questions/9442171/a-way-out-from -getting-systemoutofmemoryexception-while-imports-from-large-tex – CptSupermrkt 2012-03-07 00:27:05