ITPub博客

首页 > 数据库 > 数据库开发技术 > load高级应用

load高级应用

原创 数据库开发技术 作者:flywiththewind 时间:2016-08-18 10:50:30 0 删除 编辑

为了提高数据的移动速度,db2提供了load 实用程序。
这个工具在性能方面确实有了很大的突破,速度比import 或者insert 高的真不是一点半点。


一般来讲数据有2中存储方式,


(1)外部数据,即del\asc\ixf等等这些格式的数据,


可以直接使用load from .....
但是请注意,load\import\export这些都是db2的工具,而并非sql语句,因此直接以sql形式写入存储过程,是无法执行的。
在v9以后,可以使用sysproc.admin_cmd来执行。
call sysproc.admin_cmd('load from ....'); 
也可以直接在shell中实现,windows中可以使用.bat文件,类unix中可以使用shell脚本书写。


(2)内部数据,即从一个表向另一个表移动数据。


此时也有2中方法


第一种:
sysproc.admin_cmd,使用load from ...cursor语句,将一个表的数据选出,使用游标load 到另一个表中去。举例如下:
call sysproc.admin_cmd('load from (select * from h_mntdcha) of cursor insert into h_mntdcha_temp1 nonrecoverable');


存储过程如下:


drop procedure load_table1_2_table2;
create procedure load_table1_2_table2
(in table1 varchar(30),
 in table2 varchar(30),
 out v_str1 varchar(1000))
begin
declare v_str varchar(1000);
set v_str='load from (select * from '||table1||') of cursor insert into '||table2||' nonrecoverable';
set v_str1=v_str;
call sysproc.admin_cmd(v_str);
end;


第二种:(v8.2之前没有sysproc.admin_cmd这个存储过程,只有sysproc.db2load)


使用sysproc.db2load来完成。过程体如下:


drop procedure db2load_test;
create procedure db2load_test
(in table1 varchar(20),
 in table2 varchar(20),
 out cursor_out varchar(1000),
 out load_state varchar(1000))
begin
DECLARE v_version_number integer default 1;--
DECLARE V_CURSOR_STATEMENT varchar(32672) default ' ';--
DECLARE V_LOAD_COMMAND varchar(32672) default ' ';--
DECLARE v_sqlcode int default 0 ; --
DECLARE v_sqlmessage varchar(2048) default '  ';--
DECLARE rows_read bigint  default 0;--
DECLARE rows_skipped bigint  default 0;--
DECLARE rows_loaded bigint  default 0;--
DECLARE rows_rejected bigint  default 0;--
DECLARE rows_deleted bigint  default 0;--
DECLARE rows_committed bigint  default 0;--
DECLARE rows_part_read bigint  default 0;--
DECLARE rows_part_rejected bigint  default 0;--
DECLARE rows_part_partitioned bigint  default 0;--
DECLARE v_mpp_load_summary varchar(32672) default ' ';--
set V_CURSOR_STATEMENT='declare c cursor for select * from '||table1;
set V_LOAD_COMMAND='LOAD FROM C OF CURSOR INSERT INTO '||table2||' nonrecoverable';
set cursor_out=V_CURSOR_STATEMENT;
set load_state=V_LOAD_COMMAND;
call sysproc.db2load(V_version_number,V_CURSOR_STATEMENT,V_LOAD_COMMAND,v_sqlcode,v_sqlmessage,rows_read,rows_skipped,rows_loaded,rows_rejected,rows_deleted,rows_committed,rows_part_read,rows_part_rejected,rows_part_partitioned,V_MPP_LOAD_SUMMARY);
end@




C:\WINDOWS\system32>db2 "call sysproc.admin_cmd('load from (select * from xpf) of cursor insert into xpf2')"




  结果集 1
  --------------


  ROWS_READ            ROWS_SKIPPED         ROWS_LOADED          ROWS_REJECTED        ROWS_DELETED         ROWS_COMMITTED       ROWS_PARTITIONED
UM_AGENTINFO_ENTRIES MSG_RETRIEVAL




                                                                                    MSG_REMOVAL






  -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------------------
-------------------- --------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------- -----------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------
                    12                    0                   12                    0                    0                   12                    -
                   - -




                                                                                    -








  1 条记录已选择。


  返回状态 = 0


C:\WINDOWS\system32>

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26224914/viewspace-2123652/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: DB2 import详解
请登录后发表评论 登录
全部评论

注册时间:2011-08-30

  • 博文量
    146
  • 访问量
    207829