上篇介绍了LONG类型的基本知识,这一篇用实际代码介绍如何操作。
--在实际操作中,我们最可能遇到的问题是,将遗留的数据迁到新的环境中。对LONG类型而言,最有可能的操作就是从将数据源导入目标VARCHAR2或CLOB字段中。
以下是存储过程代码,其中被注释的内容是未优化的代码。
使用优化之后,速度提高了一倍。
select * from user_segments where segment_name like 'TMP_TAB_COLUMNS%' ;
bytes, blocks, extents
655360 80 10 -- uncompress
262144 32 4 insert as ,compress
327680 40 5 insert value , compress
327680 40 5 insert bulk , compress
create or replace procedure p_defv_tab is
cursor cur_tab_col
is
select OWNER, TABLE_NAME, COLUMN_NAME, DATA_DEFAULT
from dba_tab_columns a
where a.OWNER IN ('GLPLATFORM',
'SALESMGMT',
'TRADEMGMT',
'ENGINE',
'HOMELINK',
'PROCESSPLATFORM',
'USERMGR',
'SYSMGR',
'COMMONFRAMEWORK',
'OWNERS');
va_owner dbms_sql.varchar2s ;
va_table dbms_sql.varchar2s ;
va_col dbms_sql.varchar2s ;
va_defv dbms_sql.varchar2s ;
begin
/*
for row_tab_col in cur_tab_col loop
insert into tmp_tab_columns_comp
(OWNER, TABLE_NAME, COLUMN_NAME, DATA_DEFAULT)
values
(row_tab_col.OWNER, row_tab_col.TABLE_NAME, row_tab_col.COLUMN_NAME, row_tab_col.DATA_DEFAULT) ;
end loop;
*/
select OWNER, TABLE_NAME, COLUMN_NAME, DATA_DEFAULT
bulk collect into
va_owner, va_table, va_col, va_defv
from dba_tab_columns a
where a.OWNER IN ('GLPLATFORM',
'SALESMGMT',
'TRADEMGMT',
'ENGINE',
'HOMELINK',
'PROCESSPLATFORM',
'USERMGR',
'SYSMGR',
'COMMONFRAMEWORK',
'OWNERS');
forall i in va_owner.first..va_owner.last
insert into tmp_tab_columns_comp
(OWNER, TABLE_NAME, COLUMN_NAME, DATA_DEFAULT)
values
(va_owner(i), va_table(i), va_col(i), va_defv(i) ) ;
end;
/*
INSERT INTO TMP_TAB_COLUMNS
select OWNER, TABLE_NAME, COLUMN_NAME, CAST(DATA_DEFAULT AS VARCHAR2(100)) DV
from dba_tab_columns a where a.OWNER IN ('GLPLATFORM','SALESMGMT','TRADEMGMT','ENGINE','HOMELINK', 'PROCESSPLATFORM','USERMGR','SYSMGR','COMMONFRAMEWORK','OWNERS') ;
CREATE TABLE TMP_TAB_COLUMNS (
OWNER VARCHAR2(30),
TABLE_NAME VARCHAR2(30),
COLUMN_NAME VARCHAR2(30),
DATA_DEFAULT VARCHAR2(100));
*/
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/350519/viewspace-1048446/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/350519/viewspace-1048446/
本文通过实际案例介绍如何高效地将LONG类型数据迁移到VARCHAR2或CLOB字段中。通过对比优化前后的存储过程代码,展示如何利用BULK COLLECT和FORALL语句显著提升数据迁移效率。
1615

被折叠的 条评论
为什么被折叠?



