load高階應用
為了提高資料的移動速度,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部落格 ” ,連結:http://blog.itpub.net/26224914/viewspace-2123652/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- AWK高階應用
- Redis 高階應用Redis
- INSERT高階應用
- javascript的高階應用JavaScript
- 「Mybatis系列」Mybatis高階應用MyBatis
- 高階應用開發者手冊
- React 高階應用 -- 高階元件 Heigher Order ComponentReact元件
- python中list列表的高階應用 高階函式Python函式
- Docker 運維高階應用管理Docker運維
- javascript高階函式的應用JavaScript函式
- 高階函式應用--currying函式
- Selenium webdriver Java 高階應用WebJava
- 高階iOS應用效能優化iOS優化
- 專案管理(EXCEL高階應用)專案管理Excel
- Mylearningpath(網路安全高階應用)TCP/IP高階技術TCP
- Hive 高階應用開發示例(一)Hive
- react 高階元件的 理解和應用React元件
- 聊聊 KVC 和 KVO 的高階應用
- 高階應用開發者手冊總結
- NetMeeting高階應用 (轉)
- C語言巨集的高階應用C語言
- C++高階應用_設計模式C++設計模式
- 向量(高階的隨機化應用)隨機
- LVS高階應用-會話保持會話
- ansible高階應用ansible-vault
- JDBC 高階資料型別的應用JDBC資料型別
- WinRAR初級中級高階等應用
- STM32F103 高階應用(2)——中斷應用
- ArkWeb頁面跳轉與跨應用導航 - 高階應用Web
- Nuget一鍵打包上傳以及高階應用
- React 中的高階元件及其應用場景React元件
- 說說 vue-router 元件的高階應用Vue元件
- React 高階應用 -- 錯誤邊界 Error BoundariesReactError
- MACD技術的高階應用--MACD與波浪Mac
- Jenkins 使用指南 之 高階應用篇Jenkins
- 基於PostGIS的高階應用(5)–PolygonSplitingGo
- Spring AOP高階應用與原始碼剖析Spring原始碼
- 分享Python的5種高階特徵應用Python特徵