欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Oracle數(shù)據(jù)庫更新大批量數(shù)據(jù)案例

 更新時(shí)間:2018年10月17日 17:15:54   作者:打死你個龜孫*  
今天小編就為大家分享一篇關(guān)于Oracle數(shù)據(jù)庫更新大批量數(shù)據(jù)案例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

更新大批量數(shù)據(jù)的背景:

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

更新數(shù)量大致分為兩大步驟

一、將我們要更新的數(shù)據(jù)源導(dǎo)入數(shù)據(jù)庫內(nèi),需要創(chuàng)建臨時(shí)表,將數(shù)據(jù)傳入臨時(shí)表
二、寫游標(biāo),將臨時(shí)表內(nèi)的數(shù)據(jù)與需要更新的數(shù)據(jù)進(jìn)行更新

1.將csv文件里面的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫臨時(shí)表中,先創(chuàng)建臨時(shí)表

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

2.臨時(shí)表創(chuàng)建后,將cvs文件里的數(shù)據(jù)導(dǎo)入表中,在這里我們選擇工具>文本導(dǎo)入器 

選擇要導(dǎo)入的csv文件,注意csv文件的表字段和數(shù)據(jù)庫表字段對應(yīng) 

選擇文件后在界面將會預(yù)覽導(dǎo)入的數(shù)據(jù) 

3.點(diǎn)擊到oracle的數(shù)據(jù),選擇導(dǎo)入的表,先選擇用戶名,用戶名下的表名,然后選擇表與csv文件表字段對應(yīng)關(guān)系,我們選擇導(dǎo)入,可以看到提示導(dǎo)入完成。

4.接下來就是對會員表和臨時(shí)表的數(shù)據(jù)關(guān)聯(lián)更新,我們先使用直接update方式進(jìn)行更新試驗(yàn),該方法只更新5W數(shù)據(jù),耗時(shí)12分鐘左右:

于是參考百度文檔建議,寫了一個游標(biāo)如下

declare
 cursor cur is--聲明游標(biāo)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對應(yīng)的openid,并對游標(biāo)內(nèi)數(shù)組排序
 V_COUNTER NUMBER;--聲明一個number類型的變量
BEGIN 
V_VOUNTER:=0;--初始化變量值為0
 FOR ROW IN CUR LOOP--遍歷游標(biāo)
  UPDATE C_CLIENT_VIP A SET A.OPENID=ROW.OPENID WHERE A.ID=ROW_ID;
    V_COUNTER:=V_COUNTER+1;--每次循環(huán)變量值+1
  IF(V_COUNTER>=1000) THEN
    COMMIT;
    V_COUNTER:=0;--每更新1000行,V_COUNTER值為1000時(shí)候,就提交給數(shù)據(jù)庫
    提交后將變量歸零,繼續(xù)下一個1000行更新
  END IF;
 END LOOP;
  COMMIT;
END;


大概48W行數(shù)據(jù),43秒即更新完畢。

使用以上方式注意一點(diǎn),因?yàn)閿?shù)據(jù)庫會員表的ID有索引,所以使用游標(biāo)速率很快。如我們的多表關(guān)聯(lián)字段沒有索引,使用此方式可能效果不是很明顯。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • Oracle監(jiān)聽器服務(wù)不能啟動的解決方法

    Oracle監(jiān)聽器服務(wù)不能啟動的解決方法

    這篇文章主要介紹了Oracle監(jiān)聽器服務(wù)不能啟動的解決方法,需要的朋友可以參考下
    2014-07-07
  • Oracle 存儲過程加密方法

    Oracle 存儲過程加密方法

    Oracle 存儲過程加密方法,需要的朋友可以參考下。
    2009-10-10
  • oracle中exp,imp的使用詳解

    oracle中exp,imp的使用詳解

    這篇文章主要介紹了oracle中exp,imp的使用詳解,需要的朋友可以參考下
    2015-07-07
  • Oracle實(shí)現(xiàn)分頁三種不同的方式

    Oracle實(shí)現(xiàn)分頁三種不同的方式

    這篇文章主要給大家介紹了關(guān)于Oracle實(shí)現(xiàn)分頁三種不同的方式,oracle分頁與MySQL不同,MySQL是用關(guān)鍵字limit進(jìn)行分頁,oracle是根據(jù)行號,需要的朋友可以參考下
    2023-08-08
  • Oracle 11g2的監(jiān)聽器配置教程

    Oracle 11g2的監(jiān)聽器配置教程

    Oracle的監(jiān)聽器服務(wù)注冊方式有兩種,分別為動態(tài)和靜態(tài),本文將詳細(xì)介紹這兩種,需要的朋友可以參考下
    2012-11-11
  • 如何使用log miner分析oracle日志

    如何使用log miner分析oracle日志

    日常生活中,我們經(jīng)常因?yàn)椴僮魇д`丟失數(shù)據(jù)或者是更改數(shù)據(jù),如何進(jìn)行恢復(fù)吶?這篇文章就是幫助我們解決這一困擾,需要的朋友可以參考下
    2015-07-07
  • Oracle臨時(shí)表空間管理和優(yōu)化操作

    Oracle臨時(shí)表空間管理和優(yōu)化操作

    Oracle臨時(shí)表空間(Temporary Tablespace)主要用來存儲數(shù)據(jù)庫運(yùn)行中產(chǎn)生的臨時(shí)對象,例如SQL排序結(jié)果集,臨時(shí)表等,這些對象的生存周期只有會話,本文總結(jié)了Oralce中涉及臨時(shí)表空間的管理和優(yōu)化操作,需要的朋友可以參考下
    2024-07-07
  • oracle臨時(shí)表空間的作用與創(chuàng)建及相關(guān)操作詳解

    oracle臨時(shí)表空間的作用與創(chuàng)建及相關(guān)操作詳解

    Oracle可能會需要使用到一些臨時(shí)存儲空間,用于臨時(shí)保存解析過的查詢語句以及在排序過程中產(chǎn)生的臨時(shí)數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于oracle臨時(shí)表空間的作用與創(chuàng)建及相關(guān)操作的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • oracle11g客戶端連接12c服務(wù)器ORA-01017錯誤問題解決

    oracle11g客戶端連接12c服務(wù)器ORA-01017錯誤問題解決

    這篇文章主要介紹了oracle11g客戶端連接12c服務(wù)器ORA-01017錯誤,本文給大家分享完美解決方法,對oracle 12c錯誤ORA-01017問題解決方法感興趣的朋友跟隨小編一起看看吧
    2023-06-06
  • Kettle連接Oracle數(shù)據(jù)庫方法((Oracle19c&Oracle11g))

    Kettle連接Oracle數(shù)據(jù)庫方法((Oracle19c&Oracle11g))

    這篇文章主要介紹了Kettle連接Oracle數(shù)據(jù)庫方法((Oracle19c&Oracle11g)),包括oracle驅(qū)動jar包,連接oracle的過程,思路很簡單需要的朋友可以參考下
    2022-11-11

最新評論