a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > Oracle > 正文

Oracle數據庫更新大批量數據案例

2020-07-26 13:59:53
字體:
來源:轉載
供稿:網友

更新大批量數據的背景:

用戶需要將VIP的微信標識,傳給用戶的ERP會員檔案中,已知存量數據約50W行數據,線下的微信標識數據我們開發提供了openid和erpid的csv文件,erpid和線下的會員檔案id對應,需要將openid也更新到會員檔案里。

更新數量大致分為兩大步驟

一、將我們要更新的數據源導入數據庫內,需要創建臨時表,將數據傳入臨時表
二、寫游標,將臨時表內的數據與需要更新的數據進行更新

1.將csv文件里面的數據導入數據庫臨時表中,先創建臨時表

create table vip_openid(erpid number(10), openid varchar(200))

2.臨時表創建后,將cvs文件里的數據導入表中,在這里我們選擇工具>文本導入器 

選擇要導入的csv文件,注意csv文件的表字段和數據庫表字段對應 

選擇文件后在界面將會預覽導入的數據 

3.點擊到oracle的數據,選擇導入的表,先選擇用戶名,用戶名下的表名,然后選擇表與csv文件表字段對應關系,我們選擇導入,可以看到提示導入完成。

4.接下來就是對會員表和臨時表的數據關聯更新,我們先使用直接update方式進行更新試驗,該方法只更新5W數據,耗時12分鐘左右:

于是參考百度文檔建議,寫了一個游標如下

declare cursor cur is--聲明游標cur select B.openid,A.ID ROW_ID  FROM C_CLIENT_VIP A ,VIP_OPENID B  WHERE A.ID=B.ERPID  ORDER BY A.ID;--從A和B表中找到ID對應的openid,并對游標內數組排序 V_COUNTER NUMBER;--聲明一個number類型的變量BEGIN V_VOUNTER:=0;--初始化變量值為0 FOR ROW IN CUR LOOP--遍歷游標  UPDATE C_CLIENT_VIP A SET A.OPENID=ROW.OPENID WHERE A.ID=ROW_ID;    V_COUNTER:=V_COUNTER+1;--每次循環變量值+1  IF(V_COUNTER>=1000) THEN    COMMIT;    V_COUNTER:=0;--每更新1000行,V_COUNTER值為1000時候,就提交給數據庫    提交后將變量歸零,繼續下一個1000行更新  END IF; END LOOP;  COMMIT;END;

大概48W行數據,43秒即更新完畢。

使用以上方式注意一點,因為數據庫會員表的ID有索引,所以使用游標速率很快。如我們的多表關聯字段沒有索引,使用此方式可能效果不是很明顯。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。如果你想了解更多相關內容請查看下面相關鏈接

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久精品国产一区 | 国产成人精品免费视频大全最热 | 欧美精品一区在线 | 北条麻妃国产九九九精品小说 | 久久91精品| 欧美xxxx网站 | 好色视频在线观看 | 狠狠一区 | 成人午夜免费视频 | 天堂999| 97人人插 | 日本精品视频 | 亚洲最新av| 欧美日韩一区二区三区在线观看 | 午夜高清视频 | 三级av在线 | 91精品国产91久久久久久蜜臀 | 成人深夜福利在线观看 | av超碰在线 | 制服 丝袜 综合 日韩 欧美 | 久久久蜜桃一区二区人 | 精品福利在线视频 | 亚洲免费视频一区 | 国产视频一二区 | 青草视频在线观看免费 | 亚洲人成人一区二区在线观看 | 日韩一区二区三区在线观看 | 在线播放国产一区二区三区 | www.久久| 日韩精品一二三区 | 久久草在线视频 | 久久国产一区二区 | 日本一区免费看 | 一个人看的www日本高清视频 | 超碰97在线播放 | 久久sese| 欧美日韩成人影院 | 欧美看片| 欧美成人在线免费观看 | 欧美14一18处毛片 | 日韩中文字幕在线观看 |