深入浅出DB2
2.10 序列视图
select ?db2ts_client copy sequence –name ?||trim(seqschema)||?.?||seqname||? –source almshwdb –target auditdb ? from syscat.sequences t where t. seqschema in
(?ARIES?,?CMNREF?,?CORE_ADMIN?,?DMDATA?,?LEO?,?LIBRA?,?LIBRISK?,?LOG?,?PARAM?,?RAWDATA?,?RISKDEV?,?SCORPIO?,?SQLJ?,?VIRGO?);
3 数据导入、导出
3.1 数据移动格式
能被DB2支持移动的数据中间交换文件格式有四种:非定界ASCII码文件、定界ASCII码文件(DEL/ASCII)、WSF文件、PC/IXF文件。跨平台建议使用PC/IXF格式传输。
3.2 EXPORT
3.2.1 EXPORT概述
1. 要用于存储已导出数据的操作系统文件的路径和名称。 2. 输入文件中的数据格式:支持IXF、WSF和DEL数据格式。
3. 指定要导出的数据:对大部分导出操作,需提供SELECT语句来指定导出
范围。
3.2.2 导出数据
导出工具所需权限:SYSADM、DBADM,或者拥有访问表和视图上的CONTROL或SELECT特权。
第11页
深入浅出DB2
3.2.2.1 控制中心导出 3.2.2.2 EXPORT命令导出
EXPORT TO “D:\\db2exp\\employee.dat” OF DEL MESSAGES “D:\\
db2exp\\employee.log” SELECT * FROM DB2ADMIN.EMPLOYEE;
? TO filename
指定导出文件的名称; ? OF filetype
指定导出文件的类型。DEL/WDF/IXF ? LOBFILE filename ? LOBS TO lob-path ? MESSAGES message-file
日志信息
? MODIFIED BY filetype-mod ? METHOD N column-name 指定导出列名
? Select-statement
Select 语句指定导出数据
? XMLFILE/XML TO /XMLSAVESCHEMA
3.2.2.3 命令中调用存储过程
Call sysproc.admin_cmd(?export to /home/db2inst1/output/sales.del of del messages /home/db2inst1/output/export.msg select * from sales ?)
3.2.3 导出数据实例
1. 导出分界文件
EXPORT TO “D:\\db2exp\\employee.dat” OF DEL MESSAGES “ D:\\db2exp\\employee.log” SELECT * FROM DB2ADMIN.EMPLOYEE;
2. 导出XML文件
第12页
深入浅出DB2
EXPORT TO “ D:\\db2exp\\XEmployee.del” OF DEL XML TO “ D:\\db2exp\\data” XMLFILE “XEmployee” MODIFIED BY XMLINSEPFILES MESSAGES “ D:\\db2exp\\XEmployee.log” SELECT * FROM “ALLAN WH THAM”.XEMPLOYEE;
3. 导出IXF文件
db2 export to awards.ixf of ixf messages msgs.txt select * from staff where dept=20;
db2 export to c:\\dftz.t of ixf select * from dftz
4. LOB 导出DEL文件
Db2 export to myfile.del of del lobs to mylobs/lobfile lobs1,lobs2 modifiled by lobsinfile select * from emp_photo;
5. LOB导出DEL指定二级目录
Db2 export to myfile.del of del lobs to /db2exp1/,/db2exp2/ modified by lobsinfile select * from emp_photo;
6. 导出加符号格式化
Db2 export to myfile.del of del modified by chardel ?? coldel ; decpt,select * from staff;
3.3 导入
3.3.1 import导入数据
Db2 import from exp.del of del messages msgimport.out insert into sjxt.employee_ee;
3.3.2 load导入
db2 “load from BNK_PRDCT.txt of del replace into ARIES.BNK_PRDCT”
第13页
4 存储过程
4.1 循环插入
一、编写存储过程
create or replace procedure import_data() language sql begin declare i int default 1; set i=1;
while i <100000 do
INSERT INTO SJXT.EMPLOYEE
(EMP_NO ,EMP_NAME,DEPT ,BIRTHDAY ('BK2015001','陈善语' ,'研发部','2015-09-24'); set i=i+1; end while; end@
二、创建存储过程 db2 -td@ -f sqlpro 三、执行存储过程 db2 => call import_data()
4.2 拉链基础
4.3 DB2拉链算法实例
create or replace procedure VIRGO.PROC_L2V_EMPLOYEE (
IN IN_TX_DATE DATE,
OUT OUT_RET_CODE INTEGER, OUT OUT_SQLCODE INTEGER,
OUT OUT_SQLSTATE CHARACTER(5), OUT OUT_SQLMSG INTEGER,
OUT OUT_SQLERRMC VARCHAR(500) )
SPECIFIC VIRGO.PROC_L2V_EMPLOYEE
第14页
深入浅出DB2
) VALUES 深入浅出DB2
MODIFIES SQL DATA NOT DETERMINISTIC NULL CALL
LANGUAGE SQL EXTERNAL ACTION INHERIT SPECIAL REGISTERS
P1:BEGIN
/********************************************************************** Project : PROC_L2V_EMPLOYEE Author : chensy User Contact : chensy
Create Date : 2015-11-25 When run/freq:
Description :员工表ETL处理成员 Input Parameters : IN_TX_DATE
Output Parameters : OUT_RET_CODE = Number of rows inserted : OUT_SQLCODE = contains the DB2 SQLCODE.
Used to check for specific errors/warnings : OUT_SQLSTATE = contains the DB2 SQLSTATE.
Used to check for specific errors/warnings
: OUT_SQLMSG = contain a number which points to a line in the procedure
call and can be used to investigate issues if the proc fails
: OUT_SQLERRMC = contains a message that has details
in regards to the successful execution of the proc or an error Examples:
call VIRGO.PROC_L2V_EMPLOYEE (?,?,?,?,?);
************************************************************************/ ---------------------------拉链算法开始------------------------------ DECLARE V_MAX_DATE DATE;
DECLARE SQLCODE INT DEFAULT 0; DECLARE SQLSTATE CHAR(5) DEFAULT '';
DECLARE V_START_TS TIMESTAMP;
DECLARE V_PROC_NM VARCHAR(128) DEFAULT 'PROC_L2V_EMPLOYEE'; DECLARE V_SCHEMA_NM VARCHAR(30) DEFAULT 'VIRGO'; DECLARE V_OTHER_TEXT VARCHAR(4000);
DECLARE V_INDEX_OBSER_SUBSCR_ROW_ID VARCHAR(24); DECLARE V_INS_ROW_IND CHAR(1);
DECLARE EXIT HANDLER FOR SQLEXCEPTION P3: BEGIN
GET DIAGNOSTICS exception 1 OUT_sqlerrmc = MESSAGE_TEXT; SELECT
SQLCODE, SQLSTATE
INTO OUT_SQLCODE, OUT_SQLSTATE FROM SYSIBM.SYSDUMMY1 WITH UR; ROLLBACK; END P3;
SET V_MAX_DATE = TO_DATE('9999-12-31','YYYY-MM-DD');
--1、建立临时表,当前数据临时表 CUR , 昨日数据临时表 PRE , 新增数据临时表 INS , 删除数据临时表 DEL P4: BEGIN DECLARE GLOBAL TEMPORARY TABLE SESSION.EMPLOYEE_CUR AS
第15页