程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 詳解C#中利用ODP實現瞬間導入百萬級數據

詳解C#中利用ODP實現瞬間導入百萬級數據

編輯:關於C語言

.Net程序中可以通過ODP調用特性,對Oracle數據庫進行操作,今天來講一下數據批量插入的功能,所用技術不高不深,相信很多朋友都接觸過,小弟班門弄斧了,呵呵。這篇文章是上篇文章的續集,因為上一次試驗的征集結果沒有突破4秒的方法,所以這次繼續挑戰與挖掘新方法,雖然是Oracle,但仍具有一定收藏意義。

上一次文章中提及的試驗:

極限挑戰—C#100萬條數據導入SQL Server數據庫僅用4秒 (附源碼)

http://www.cnblogs.com/isline/archive/2010/03/18/1688783.Html

這個試驗是針對SQL Server數據庫的,宿主環境也是.Net,有興趣的朋友可以將這兩個試驗對比一下,為日後工作批量導數提供支持。

另外,一些朋友對上次試驗環境有些異議,認為應該對數據庫和服務器做優化或設置,以體現試驗最終的時間結果。這個固然會影響試驗的時間結果,但考慮到在試驗環境中,對數據庫優化的標准與優化程度不便統一與定量,試驗結果也不易說明其影響源,所以這次試驗依然以標准數據庫建庫後的配置為主,試驗所在服務器硬件環境與上次試驗保持一致。實驗目的在於挖掘、對比宿主程序中的數據批量操作方法。

有新方法提升性能時間指標的朋友,歡迎互相切磋,互相提高,嘴上功夫就免了。。。

好了正文開始。

普通肉墊式

什麼叫批量插入呢,就是一次性插入一批數據,我們可以把這批數據理解為一個大的數組,而這些全部只通過一個SQL來實現,而在傳統方式下,需要調用很多次的SQL才可以完成,這就是著名的“數組綁定”的功能。我們先來看一下傳統方式下,插入多行記錄的操作方式:

  1. //設置一個數據庫的連接串,   
  2. string connectStr = "User Id=scott;PassWord=tiger;Data Source=";   
  3. OracleConnection conn = new OracleConnection(connectStr);  
  4.  OracleCommand command = new OracleCommand(); 
  5. command.Connection = conn; conn.Open();   
  6. Stopwatch sw = new Stopwatch();   
  7. sw.Start(); //通過循環寫入大量的數據,這種方法顯然是肉墊   
  8. for (int i = 0; i < recc; i++)   
  9. {   
  10. string sql = "insert into dept values(" + i.ToString() 
  11. + "," + i.ToString() + "," + i.ToString() + ")";  
  12. command.CommandText = sql;   
  13. command.ExecuteNonQuery();   
  14. }  
  15.  sw.Stop();  
  16. System.Diagnostics.Debug.WriteLine("普通插入:" + recc.ToString()
  17.  + "所占
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved