手動通過sql語句處理lob字段值(更新 插入)

2021-10-07 06:45:11 字數 2094 閱讀 3045

在資料庫運維中,偶爾會碰到需要手動修改lob欄位的情況。對於大物件的處理,

並不能直接用update或者insert普通dml操作。通過查詢並測試,確認下面方法可行,

並且不會產生亂碼。

(僅供參考)

######sql處理lob欄位資料#######

--資料庫伺服器上建立目錄,或者使用現有目錄

create directory dump_dir as '/data/dump_dir'

--將待處理檔案如lob.txt上傳到directory目錄

--測試表

create table clobtest(col1 clob);

--使用dbms_lob.loadfromfile,這個方法網上很多例子,但是實際使用時會產生亂碼。

declare

a_clob clob;

bfile_name bfile := bfilename('dump_dir','lob.txt');

begin

insert into clobtest values (empty_clob()) returning col1 into a_clob;

dbms_lob.fileopen(bfile_name);

dbms_lob.loadfromfile(a_clob, bfile_name, dbms_lob.getlength(bfile_name));

dbms_lob.fileclose(bfile_name);

commit;

end;

/--使用dbms_lob.loadclobfromfile插入clob字段值正常

declare

v_clob clob;

bfile_name bfile := bfilename('dump_dir','lob.txt');

dest_offset number :=1;

source_offset number :=1;

src_csid number :=nls_charset_id('utf8');

lang_ctx integer :=dbms_lob.default_lang_ctx;

warn integer;

begin

insert into clobtest values (empty_clob()) returning col1 into v_clob;

dbms_lob.fileopen(bfile_name);

dbms_lob.loadclobfromfile(v_clob,bfile_name,dbms_lob.lobmaxsize,dest_offset,source_offset,src_csid,lang_ctx,warn);

dbms_lob.fileclose(bfile_name);

commit;

end;

/--update clob  使用dbms_lob.loadclobfromfile更新clob字段值正常

declare

v_clob clob;

bfile_name bfile := bfilename('dump_dir','lob.txt');

dest_offset number :=1;

source_offset number :=1;

src_csid number :=nls_charset_id('utf8');

lang_ctx integer :=dbms_lob.default_lang_ctx;

warn integer;

begin

update clobtest set col1=empty_clob() where rownum=1 returning col1 into v_clob;

dbms_lob.fileopen(bfile_name);

dbms_lob.loadclobfromfile(v_clob,bfile_name,dbms_lob.lobmaxsize,dest_offset,source_offset,src_csid,lang_ctx,warn);

dbms_lob.fileclose(bfile_name);

commit;

end;

/

通過SQL語句實現要素Geometry欄位解析

在系統應用中,為了獲取要素幾何欄位的點值集合,我們以前經常會想到用arcengine來進行開發解析,這裡介紹一種更快捷的方式,通過sde提供的資料庫st函式,利用sql語句直接解析。1 配置oracle外接函式庫 如果要在oracle中執行st函式,首先必須配置以下內容。a 配置oracleextp...

通過SQL語句實現要素Geometry欄位解析

通過sql語句實現要素geometry欄位解析 在系統應用中,為了獲取要素幾何欄位的點值集合,我們以前經常會想到用arcengine來進行開發解析,這裡介紹一種更快捷的方式,通過sde提供的資料庫st函式,利用sql語句直接解析。1 配置oracle外接函式庫 如果要在oracle中執行st函式,首...

通過Excel生成批量SQL語句,處理大量資料

我們經常會遇到這樣的要求 使用者給發過來一些資料,要我們直接給存放到資料庫裡面,有的是insert,有的是update等等,少量的資料我們可以採取最原始的辦法,也就是在sql裡面用insert into來實現,但是如果有幾十條幾百條甚至上千條資料的時候繼續寫單獨的sql語句的話那就慘了,其實有兩種簡...