幾千行對 oracle 來說不是問題,可以一次提交
創(chuàng)新互聯(lián)建站是一家專業(yè)提供桓仁企業(yè)網(wǎng)站建設,專注與網(wǎng)站設計制作、做網(wǎng)站、HTML5建站、小程序制作等業(yè)務。10年已為桓仁眾多企業(yè)、政府機構(gòu)等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進行中。
如果一定要這么做,有兩種方式:
一,用游標打開,一行拼一個insert 語句,并計數(shù);滿100后提交
二,分頁查詢,每頁100行 ,然后提交
我覺得:能一次提交的盡量不要分開提交,如果提交到一部分時候,出現(xiàn)問題了,提交的不能回滾了。增加了業(yè)務邏輯的復雜性。
oracle的提交用commit,一般commit用語update語句及insert語句中。
如,有以下兩個語句:
update?test?set?id=3?where?id=2;
commit;
insert?into?test?values?(4,'王五');
commit;
如果進行了update及insert操作后不進行提交的話,那么修改或插入的數(shù)據(jù)只在當前session有效,并不會寫入數(shù)據(jù)庫,只有當commit(提交)后,才會生效。
這個commit應該是本機的,和dblink沒什么關(guān)系,而且就算你找到的dblink的那個session那么也不行,以為這個session在dblink的操作完成后已經(jīng)關(guān)閉了。
個人感覺不要這么遠程insert,最好是調(diào)用一個那個數(shù)據(jù)庫上的過程去insert這樣的話,在那個過程中commit肯定是沒有問題的。
如果必須要這么寫,那么可以加入一條insert和一條delete
就是上面是正常insert的語句。
下面有一條delete(這條刪除一個絕對不可能出現(xiàn)的一條試試)
按照你的說法,第二個事務提交時,第一個事務才能commit??墒沁@樣會出現(xiàn)問題,因為如果你大量提交,那么數(shù)據(jù)庫會因此夯住的,所以你看看第一個辦法行不行,我覺得第一個辦法還靠譜點。
大數(shù)據(jù)量提交可能會造成系統(tǒng)癱瘓,所以不建議這樣做。
如果有需要,可以在導出insert語句的時候分批次commit(提交)。
方法如下:
1、登錄plsql,進入導出表
2、選擇要導出的表,然后下圖位置根據(jù)需要寫上每次多少行提交,選擇導出路徑,點擊導出即可