sqlbulkcopy,用於資料庫之間大批量的資料傳遞。通常用於新,舊資料庫之間資料的更新。即使表結構完全不同,也可以通過欄位間的對應關係,順利的將資料導過來。
1.初始化sqlbulkcopy物件,用新的連線作為引數。
sqlbulkcopy bulkcopy = new sqlbulkcopy(鏈結字串);
2.資料來源與目的資料表的對映關係(列名要對應)
3.設定目標表名
bulkcopy.destinationtablename = 目標表名;
4.設定一次性處理的行數。這個行數處理完後,會激發sqlrowscopied()方法。預設為1
bulkcopy.notifyafter = 10;
5.傳輸資料
bulkcopy.writetoserver(sdr);
目前有乙個txt文件,裡面記錄了大量的資料
然後我們用常見的資料庫操作將其匯入資料庫中
1 openfiledialog ofd = new執行專案,檢視需要完成的總秒數。openfiledialog();
2 ofd.filter = "
txt檔案|*.txt";
3if (ofd.showdialog() == false)4
8//讀取txt中的內容,然後拼接字串9//
readlines可以一行一行讀取內容,並保留內容中的換行符,而 readalllines 時,必須等待整個字串陣列返回後才能訪問該陣列。 因此,在處理非常大的檔案時,readlines 可能更高效。
10string lines =file.readlines(ofd.filename, encoding.default).toarray();
11using (sqlconnection con = new sqlconnection(configurationmanager.connectionstrings["
connstr
"].tostring()))
1241
//執行到第i條的時間
42 datetime nowtime =datetime.now;
43 timespan ts = nowtime -starttime;
44//
double totaltime=(ts.totalseconds/(i+1))*(lines.length)/60;
4546
//需要總秒數
47double totaltime = ts.totalseconds * lines.length / (i + 1);
一共將要執行時間1671秒,將近28分鐘。
然後我們用sqlbulkcopy來讀取資料並儲存。
1//建立乙個datattable用於傳遞引數。
2 datatable table = new
datatable();3//
建立列與資料庫對應上
不難發現只用了3秒鐘,所以可以看出在對大資料處理時最好使用sqlbulkcopy來進行操作!
MySQL essential版本和普通版
1.mysql community server 社群版本,開源免費,但不提供官方技術支援。2.mysql enterprise edition 企業版本,需付費,可以試用30天。3.mysql cluster 集群版,開源免費。可將幾個mysql server封裝成乙個server。4.mysql...
static 函式和普通函式
全域性變數 外部變數 的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方 式。這兩者在儲存方式上並無不同。這兩者的區別雖在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態 的全域性變數在各個原始檔中都...
普通管道和命名管道
2116 0 管道分為普通管道和命名管道 兩者都是半雙工的。普通管道只能用於父子程序或兄弟程序間的通訊,因為普通管道通過fork呼叫來拷貝檔案描述符的,在檔案系統中,普通管道並不對應物理檔案。命名管道在檔案系統中有物理檔案存在,因此可以用於非親屬的程序間通訊。include int pipe int...