SqlBulkCoy和普通資料庫操作執行速度對比

2022-03-28 16:08:41 字數 2405 閱讀 2613

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...