亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

ORACLE批量導入圖片到BLOB字段代碼示例

2020-07-26 14:03:20
字體:
來源:轉載
供稿:網友

要插入圖片的表不是固定的,而且是批量插入很多張,還要考慮到因為圖片的文件名錯誤,修改后要再次插入,此時應避免已經插入的重復執行操作, 浪費時間。

所以就選擇先用一張臨時表來暫時保存從文件系統讀取的照片,用DBMS_LOB的方法來處理。

第一步:創建一個數據庫可以訪問的目錄(注意:這個目錄是數據庫服務器上的目錄,不是客戶機上的)

-- Create directory create or replace directory 圖片目錄 as 'E:/照片';

第二步:將圖片文件放入剛建好的目錄下面,不要在新建文件夾,就放在這個根目錄

第三步:根據自己的具體需求,編寫存儲過程,在做之前,我也在網上找了很多,但基本都只是大概說一下,沒有找到比較完整的,這里就把自己的項目源碼貼出來,供大家學習交流。

CREATE OR REPLACE PROCEDURE PRO_插入圖片(V_表名 IN VARCHAR2) IS P_FILENAME VARCHAR2(50); --照片名,動態拼接得到 P_證件號碼 VARCHAR2(50); P_姓名   VARCHAR2(50);--這個照片名是通過姓名+證件號拼接得到的,因為基礎測試數據沒有提供真實的證件號碼,就選擇用手機號來代替 P_查詢SQL VARCHAR2(500); P_更新SQL VARCHAR2(5000); P_LOB   BLOB; P_FILE   BFILE; TYPE P_REF_CURSOR IS REF CURSOR; --定義動態游標變量類型 P_CURSOR P_REF_CURSOR; --定義動態游標變量,因為一次要插入全表的照片,所以選擇用游標來處理 TYPE P_ROW_RECORD IS RECORD(  證件號碼 VARCHAR2(50),  姓名   VARCHAR2(50)); C_ROW P_ROW_RECORD; V_ERR VARCHAR2(300);BEGIN P_更新SQL := 'update ' || V_表名 || ' set 證件號碼=手機號碼 WHERE 證件號碼 IS NULL';--用手機號來代替證件號碼為空的數據 EXECUTE IMMEDIATE P_更新SQL; COMMIT; P_查詢SQL := 'SELECT 證件號碼,姓名 FROM ' || V_表名 ||       ' WHERE 證件號碼 IS NOT NULL and 照片 IS NULL order by 證件號碼'; OPEN P_CURSOR FOR P_查詢SQL; LOOP  begin   FETCH P_CURSOR    INTO C_ROW;   EXIT WHEN P_CURSOR%NOTFOUND;

--獲取證件號碼和姓名,先排除空格等臟數據,然后拼接成文件名;

   P_證件號碼 := C_ROW.證件號碼;   P_姓名   := C_ROW.姓名;   SELECT REPLACE(P_證件號碼, ' ', '') INTO P_證件號碼 FROM DUAL;   SELECT substr(P_證件號碼, 1, 11) INTO P_證件號碼 FROM DUAL;   SELECT REPLACE(P_姓名, ' ', '') INTO P_姓名 FROM DUAL;   P_FILENAME := P_證件號碼 || P_姓名 || '.jpg';   SELECT REPLACE(P_FILENAME, ' ', '') INTO P_FILENAME FROM DUAL;--以下便是插入圖片的核心代碼   INSERT INTO TA_照片總表_TEMP    (證件號碼, 姓名, 照片)   VALUES    (P_證件號碼, P_姓名, EMPTY_BLOB()) RETURN 照片 INTO P_LOB;   --獲取指定目錄下的文件   P_FILE := BFILENAME('圖片目錄', P_FILENAME);   --以只讀的方式打開文件   DBMS_LOB.FILEOPEN(P_FILE, DBMS_LOB.FILE_READONLY);   --傳遞對象   DBMS_LOB.LOADFROMFILE(P_LOB, P_FILE, DBMS_LOB.GETLENGTH(P_FILE));   --關閉原始文件   DBMS_LOB.FILECLOSE(P_FILE);   COMMIT;

--通過更新語句來向目標表插入圖片

   P_更新SQL := 'UPDATE ' || V_表名 ||         ' A SET a.照片=(SELECT 照片 FROM TA_照片總表_TEMP b          WHERE A.證件號碼 = B.證件號碼 and a.姓名=b.姓名 AND ROWNUM=1)   WHERE EXISTS (SELECT 1 FROM TA_照片總表_TEMP B WHERE A.證件號碼 = B.證件號碼 and a.姓名=b.姓名)';   EXECUTE IMMEDIATE P_更新SQL;   COMMIT;  EXCEPTION

--處理異常情況,這個可以在出現異常時跳過異常繼續跑。正常數據依然可以插入,并且記錄異常信息,方便異常處理。這個是因為第一次寫的過程一報錯就斷掉了,本來可以插入的圖片也無法繼續,然后就做了這個優化。

   WHEN OTHERS THEN    rollback;    V_ERR := SUBSTR(SQLERRM, 1, 150) || '照片名:' || P_FILENAME;

--定義一張異常信息記錄表,是一個非常好的習慣

    INSERT INTO TA_程序運行異常記錄    VALUES     (SQ_異常序列.NEXTVAL, 'PRO_插入圖片', V_ERR, SYSDATE);    COMMIT;  end; END LOOP; CLOSE P_CURSOR; COMMIT; DELETE TA_照片總表_TEMP; COMMIT;END PRO_插入圖片;

總結

然后測試、運行,基本都沒問題,不過圖片的大小,很影響實際插入的時間,這個時間的優化目前還沒有好的對策。

以上就是本文關于ORACLE批量導入圖片到BLOB字段代碼示例的全部內容,希望對大家有所幫助。感興趣的朋友可以參閱:oracle 數據庫啟動階段分析 、ORACLE SQL語句優化技術要點解析 、oracle中length、lengthb、substr、substrb函數用法介紹 等,有什么問題可以隨時留言,小編會及時回復大家的。也希望朋友們對武林網網站多多支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产免费一区二区三区在线观看| 久久免费国产视频| 久久精品国产成人精品| 久久久久久12| 日本精品久久电影| 亚洲成人av片在线观看| 韩剧1988在线观看免费完整版| 91在线观看免费观看| 久久久久久久久久久免费精品| 国产精品日韩电影| 91亚洲国产成人精品性色| 中日韩美女免费视频网址在线观看| 日韩av一区在线观看| 成人国产精品一区二区| 91国产高清在线| 麻豆一区二区在线观看| 亚洲成人av资源网| 日韩av网站大全| 欧美亚洲国产视频小说| 日韩最新免费不卡| 成人国产精品久久久| 欧美电影在线免费观看网站| 国产精品视频自拍| 久久久999精品| 成人日韩av在线| 国产va免费精品高清在线观看| 色综合伊人色综合网| 韩国视频理论视频久久| 国产日韩欧美在线视频观看| 亚洲国产精品99| 国产视频福利一区| 国产精品国产三级国产aⅴ浪潮| 麻豆乱码国产一区二区三区| 国产精品免费网站| 91久久久久久| 日韩国产高清视频在线| 黑人欧美xxxx| 最近中文字幕mv在线一区二区三区四区| 久久久久久一区二区三区| xxav国产精品美女主播| 欧美色视频日本版| 91九色视频在线| 久久精品99久久久久久久久| 在线观看国产精品淫| 久久亚洲精品一区二区| 亚洲va电影大全| 日本欧美一二三区| 国产精品xxxxx| 亚洲国产另类久久精品| 国产精品一区二区女厕厕| 97av视频在线| 欧美激情在线狂野欧美精品| 国产精品久久久久久婷婷天堂| 久久99青青精品免费观看| 色综合久久中文字幕综合网小说| 国产成人精品在线观看| 久久久久国产视频| 国产主播喷水一区二区| 久久69精品久久久久久国产越南| 91精品在线看| 日韩欧美亚洲综合| 亚洲另类xxxx| 国产91色在线|免| 成人在线观看视频网站| 日韩欧美亚洲综合| 高清欧美性猛交xxxx黑人猛交| 992tv在线成人免费观看| 国产婷婷97碰碰久久人人蜜臀| 亚洲国产日韩欧美在线动漫| 奇米影视亚洲狠狠色| 国产91久久婷婷一区二区| 一本大道亚洲视频| 538国产精品视频一区二区| 成人网在线免费观看| 欧美电影在线观看完整版| 亚洲自拍偷拍网址| 久久久久久久久久亚洲| 正在播放国产一区| 欧美黄色性视频| 国产99视频精品免视看7| 狠狠色狠色综合曰曰| 成人午夜黄色影院| 欧美大片免费观看| 色偷偷综合社区| 久久久久北条麻妃免费看| 欧美极品少妇xxxxx| 这里只有精品视频在线| 国产精品wwww| 亚洲第一男人天堂| 精品中文字幕乱| 欧美性猛交xxxx黑人猛交| 欧美日韩福利电影| 欧美成人一区在线| 国产精品欧美一区二区| 国产成人在线视频| 欧美壮男野外gaytube| 久久人人爽人人爽人人片av高请| 国产极品精品在线观看| 国产精品日韩欧美大师| 国产婷婷色综合av蜜臀av| 日韩激情视频在线播放| 国产欧美日韩专区发布| 精品无人区太爽高潮在线播放| 亚洲最新中文字幕| 97视频在线观看亚洲| 国产精品久久久久9999| 久久久久国产一区二区三区| 国内精品久久久久影院优| 国产精品视频大全| 亚洲国产精品久久久久秋霞蜜臀| 久久久久国产精品免费网站| 国产91免费观看| 国产亚洲欧美另类中文| 亚洲视频777| 日韩成人免费视频| 中日韩午夜理伦电影免费| 欧美成年人视频网站| 亚洲色图50p| 性欧美xxxx| 久久中文精品视频| 国产精品第1页| 日韩电影大全免费观看2023年上| 日本三级韩国三级久久| 97精品久久久| 久久网福利资源网站| 国产在线视频欧美| 97久久精品在线| 亚洲国产成人精品久久久国产成人一区| 一区二区三区视频免费在线观看| 51色欧美片视频在线观看| 国产一区二区三区高清在线观看| 亚洲高清不卡av| 国产乱人伦真实精品视频| 久久视频在线观看免费| 欧美洲成人男女午夜视频| 国产亚洲欧洲高清一区| 亚洲一区免费网站| 国产精品久久久久av免费| 国产91在线视频| 欧美成人免费播放| 国产亚洲精品综合一区91| 91精品久久久久久久久久| 亚洲男人第一网站| 日韩欧美精品在线观看| 亚洲美女av网站| 国产精品v片在线观看不卡| 久久久久久久久亚洲| 最近2019中文免费高清视频观看www99| 国产人妖伪娘一区91| 日韩精品免费在线播放| 国产精品网站视频| 色琪琪综合男人的天堂aⅴ视频| 欧美视频在线观看 亚洲欧| 2019最新中文字幕| 欧洲成人午夜免费大片| 亚洲永久在线观看| 欧美亚洲国产日韩2020| 国产精品久久久91| 免费av在线一区| 在线播放日韩专区| 亚洲欧美精品一区二区| 国产成人精品av| 亚洲激情第一页| 亚洲国产成人久久综合|