將資料庫照片大欄位下卸到檔案系統,照片檔名以某一個欄位命名
目的:
將資料庫的照片匯入到檔案系統照片的名稱以grid主鍵資料命名照片名稱grid.jpg ,並指定照片的位置存放在資料庫中的位置
1、建立direcory存放照片位置
create directory BLOBDIR as '/expdp_dir1';
grant read ,write on directory to public;
2、在gr_xx 表新增一列存放照片地址
alter table grxer_xx11 add address varchar2(100);
3、建立儲存過程將資料庫照片匯出
create or replace procedure photo_dump(IDENTITYID in varchar2,filename in varchar2) is
l_file UTL_FILE.FILE_TYPE;
l_buffer RAW(32767);
l_amount BINARY_INTEGER := 32767;
l_pos INTEGER := 1;
l_blob BLOB;
l_blob_len INTEGER;
begin
SELECT photo
INTO l_blob
FROM grxer_xx11 WHERE grid = IDENTITYID and photo is not null;
l_blob_len := DBMS_LOB.GETLENGTH(l_blob);
l_file := UTL_FILE.FOPEN('BLOBDIR',filename,'wb', /*l_blob_len*/32767);
WHILE l_pos < l_blob_len LOOP
DBMS_LOB.READ(l_blob, l_amount, l_pos, l_buffer);
UTL_FILE.PUT_RAW(l_file, l_buffer, TRUE);
l_pos := l_pos + l_amount;
END LOOP;
UTL_FILE.FCLOSE(l_file);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLERRM);
IF UTL_FILE.IS_OPEN(l_file) THEN
UTL_FILE.FCLOSE(l_file);
END IF;
RAISE;
end photo_dump;
4、執行匯出照片指令碼 並更新照片位置
declare
begin
for i in (select grid from grxer_xx11 where photo is not null) loop
photo_dump(i.grid,i.grid||'.jpg');
update grxer_xx11 set address='/expdp_dir1/'||i.grid||'.jpg' where grid=i.grid;
commit;
end loop;
end;
/
如果圖片特別多需要進行分批處理,執行以下方案:
sqlplus bjsx/Tzxz0309 <<EOF
declare
begin
for i in ( SELECT grid
FROM ( SELECT ROWNUM AS rowno, t.grid
FROM gr_xx t where photo is not null
AND ROWNUM <= 1000000) table_alias
WHERE table_alias.rowno >= 1) loop
photo_dump1(i.grid,i.grid||'.jpg');
commit;
end loop;
end;
/
EOF
標紅色為分頁寫法。
5、插看執行結果
cd /expdp_dir1/
ll *.jpg
select grid,address from grxer_xx11 where address is not null;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30345407/viewspace-2689254/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫表欄位命名規範資料庫
- Oracke大欄位Blob匯出到檔案
- MYSQL資料庫欄位命名及設計規範MySql資料庫
- ASP獲取資料庫表名,欄位名以及對欄位的一些操作 (轉)資料庫
- SQL Server中獲取資料庫名、表名、欄位名和欄位註釋的SQL語句SQLServer資料庫
- SQLLDR——CTL檔案:欄位設定SQL
- 欄位級資料庫加密推出;瑞幸股價暴跌;Zoom漏洞可洩露照片資料庫加密OOM
- sqlserver查詢一個庫所有表的欄位名及欄位型別SQLServer型別
- 對資料庫中的表或欄位重新命名資料庫
- 快速將下劃線欄位改為駝峰欄位
- 資料庫int欄位超限資料庫
- 資料庫欄位問題資料庫
- 一個Java檔案解決mybatis呼叫資料庫欄位與Java類檔案屬性不對應JavaMyBatis資料庫
- 將多個JSON欄位對映到單個Java欄位JSONJava
- MySQL中修改一個資料庫下包含有某個相同欄位的所有表的欄位長度MySql資料庫
- 從資料庫中blob欄位中,下載word檔案,word檔案全是亂碼,怎麼會事啊資料庫
- Linux下/etc/default/boot檔案欄位說明(轉)Linuxboot
- oracle 資料庫設定表和欄位的別名Oracle資料庫
- 如何找出兩個文字檔案中有相同欄位的行
- 序列化,資料庫存多個欄位資料資料庫
- sqlloader匯入資料_資料檔案的欄位超出最大長度SQL
- MySQL資料庫中庫、表名、欄位的大小寫問題MySql資料庫
- 動態為10g資料庫的表新增欄位,到256個欄位,hung住了?資料庫
- 如何用win7系統批次修改照片檔名Win7
- 資料庫設計——冗餘欄位資料庫
- 資料庫欄位簡寫說明資料庫
- mysql資料庫新增和修改欄位MySql資料庫
- PHP 二維陣列, 按某一個欄位排序PHP陣列排序
- 數碼檔案與資料夾收納術(以照片為例)
- 保留兩位小數:資料庫欄位型別NUMBER,Java欄位型別Double型別資料庫型別Java
- 根據欄位查表名
- Java 如何找出兩個文字檔案中有相同欄位的行Java
- 模型資料追加欄位模型
- 獲取sql server資料庫中所有庫、表、欄位名的方法SQLServer資料庫
- pydantic 欄位欄位校驗
- es統計資料去除某個欄位的某些資料
- 資料庫系列:高併發下的資料欄位變更資料庫
- 【Mybatis】mapper對映檔案中<sql>標籤的id等欄位爆紅,資料庫表名爆紅。MyBatisAPPSQL資料庫