1樓:充煜
你可以進行引數化操作。使注入無效。
c#中往mysql裡批量插入上萬條資料,有比較高效的方法嗎
2樓:匿名使用者
首先, 插入上萬條資料,對於資料庫來說並不是「很大」的工作量,一般配置的膝上型電腦都可以在1分鐘內完成。 所以最簡單、最靈活的辦法還是寫sql語句。
如果不希望db編譯器每次執行都編譯sql的話,可以使用儲存過程,直接呼叫,效能上會好很多。也比較簡單。
幾萬條資料怎麼地也得要時間去處理,所以不可能特別快的。)
如果由於各種原因,導致這個插入還是很慢, 而且你的mysql又是以上版本的話,可以使用bulkcopy來進行批量操作。
bulkcopy的原理就是client直接把一個陣列(datatable)傳給db,然後傳入表名,所有的編譯、操作都由db自己完成,效率很高。
引用 , 呼叫mysqlbulkcopy函式即可。
這個函式在處理海量資料插入的時候效率尤為明顯, 小量資料反而沒什麼優勢,而且由於傳入的datatable格式必須和表的欄位一模一樣(空的列也要傳進去),導致c#要寫很多**來構造這個陣列,所以要你自己權衡用還是不用。
我在自己的電腦上批量插入一億條資料,insert寫法大概需要1小時,bulkcopy大概只需要5分鐘。
3樓:鬼谷子教主
用引數法(避免database每次插入都要解析sql)。
急求關於asp的問題,關於新增新聞,寫入資料庫的
dim fsstring strmore fstring replace fstring,fstring replace fstring,fstring replace fstring,chr 32 fstring replace fstring,chr 9 fstring replace fstr...
c語言區分int資料正負的問題,C語言區分int資料正負的問題
型別是對一串二進位制位的解釋,這16bit有兩種解釋,有符號整數,有無符號整數。按有符號數來解釋,最高位是符號位,1表示負數,其值為 20840。按無符號數來解釋,值為44696。其實機器是不知道正負的 正負是給編譯器看的 程式編譯的時候正負就已經有區分啦 比如你如果用匯編的話就少了有符號和無符號這...
資料庫問題之觸發器,關於資料庫新增觸發器的問題
觸發器被觸發時需要一個條件,比如說insert,update,delete,而如果觸發起被定義為instead of,那麼,觸發的那個sql就不被執行了.比如說,定義了插入資料的觸發器,但是當插入一條資料的時候插入資料這個操作沒有被執行,只執行了觸發器裡面的內容.就是這個意思.資料庫觸發器問題 在c...