-
DB2学习资料(1)
2008-12-06 13:45:51
db2的资料整理1、目前链接db2服务器端的程序比较多,在这里介绍几个,除使用命令行外,如Toad 、dbvisual personal等Toad:http://www.toadsoft.com/toaddb2/db2_freeware.htm2、在linux安装db2成功后,需要编目录才能访问。添加目录和节点catalog tcpip node 节点名remote ip地址server 50000calatog database 数据库名 as 别名at node 节点名authentication server删除目录和节点uncatalog node 节点名uncatalog database 数据名或别名3、存储过程创建SQL存储过程(CREATE PROCEDURE (SQL) statement )语法格式如下:>>-CREATE PROCEDURE--procedure-name----------------------------->>--+----------------------------------------------------+--*---->
'-(--+------------------------------------------+--)-'
| .-,------------------------------------. |
| V .-IN----. | |
'---+-------+--parameter-name--data-type-+-'
+-OUT---+
'-INOUT-'>--+-------------------------+--*------------------------------->
'-SPECIFIC--specific-name-'.-DYNAMIC RESULT SETS 0--------. .-MODIFIES SQL DATA-.
>--+------------------------------+--*--+-------------------+--->
'-DYNAMIC RESULT SETS--integer-' +-CONTAINS SQL------+
'-READS SQL DATA----'.-NOT DETERMINISTIC-. .-CALLED ON NULL INPUT-.
>--*--+-------------------+--*--+----------------------+--*----->
'-DETERMINISTIC-----'.-INHERIT SPECIAL REGISTERS-. .-7 OLD SAVEPOINT LEVEL-.
>--+---------------------------+--*--+---------------------+---->
'-7 NEW SAVEPOINT LEVEL-'.-LANGUAGE SQL-. .-7 EXTERNAL ACTION----.
>--7 *--+--------------+--*--+--------------------+--*------------>
'-7 NO EXTERNAL ACTION-'>--+------------------------------+--3 *-------------------------->
'-3 PARAMETER CCSID--+-3 ASCII---+-'
'-3 UNICODE-'>--| SQL-procedure-body |--------------------------------------><SQL-procedure-body:|--SQL-procedure-statement--------------------------------------|语法说明1、procedure-name: 存储过程的名字,在同一个数据库的同一模式下,不能存在存储过程名相同参数数目相同的存储过程,即使参数的类型不同也不行。2、(IN | OUT | INOUT parameter-name data-type,...) :传入参数
IN:输入参数
OUT:输出参数
INOUT:作为输入输出参数
parameter-name:参数名字,在此存储过程中唯一的标识符。
data-type:参数类型,可以接收SQL类型和创建的表。不支持LONG VARCHAR, LONG VARGRAPHIC, DATALINK, REFERENCE和用户自定义类型。3、SPECIFIC specific-name:唯一的特定名称(别名),可以用存储过程名代替,这个特定名称用于dorp存储过程,或者给存储过程添加注视用,但不能调用存储过程。如果不指定,则数据库会自动生成一个yymmddhhmmsshhn时间戳的名字。推荐给出别名。4、DYNAMIC RESULT SETS integer:指定存储过程返回结果的最大数量。存储过程中虽然没有return语句,但是却能返回结果集。5、CONTAINS SQL, READS SQL DATA, MODIFIES SQL DATA: 指定存储过程中的SQL访问级别
CONTAINS SQL: 表示存储过程可以执行中,既不可读取 SQL 数据,也不可修改 SQL 数据。
READS SQL DATA: 表示存储过程可以执行中,可读取SQL,但不可修改 SQL 数据。
MODIFIES SQL DATA: 表示存储过程可以执行任何 SQL 语句。可以对数据库中的数据进行增加、删除和修改。6、DETERMINISTIC or NOT DETERMINISTIC:表示存储过程是动态或者非动态的。动态的返回的值是不确定的。非动态的存储过程每次执行返回的值是相同的。7、CALLED ON NULL INPUT:表示可以调用存储过程而不管任何的输入参数是否为NULL,并且,任何的OUT或者INOUT参数可以返回一个NULL或者非空值。检验参数是否为NULL是在过程中进行的。8、INHERIT SPECIAL REGISTERS:表示继承专用寄存器。9、OLD SAVEPOINT LEVEL or NEW SAVEPOINT LEVEL:建立存储点。OLD SAVEPOINT LEVEL是默认的存储点。10、LANGUAGE SQL:指定程序的主体用的是SQL语言。11、EXTERNAL ACTION or NO EXTERNAL ACTION:表示存储过程是否执行一些改变理数据库状态的活动,而不通过数据库管理器管。默认是 EXTERNAL ACTION。如果指定为NO EXTERNAL ACTION ,则数据库会确定最最佳优化方案。12、PARAMETER CCSID:指定所有输出字符串数据的编码,默认为UNICODE编码数据库为PARAMETER CCSID UNICODE ,其他的数据库默认为PARAMETER CCSID 3 ASCII。13、SQL-procedure-body:存储过程的主体
例子1:产生一个SQL存储过程,返回员工的平均薪水. 返回所有员工超过平均薪水的数额,结果集包括name, position, and salary字段(参考数据库为db2的示例数据库sample)。CREATE PROCEDURE MEDIAN_RESULT_SET (OUT medianSalary DOUBLE)
RESULT SETS 1
LANGUAGE SQL
BEGIN
DECLARE v_numRecords INT DEFAULT 1;
DECLARE v_counter INT DEFAULT 0;DECLARE c1 CURSOR FOR
SELECT CAST(salary AS DOUBLE)
FROM staff
ORDER BY salary;
DECLARE c2 CURSOR WITH RETURN FOR
SELECT name, job, CAST(salary AS INTEGER)
FROM staff
WHERE salary > medianSalary
ORDER BY salary;DECLARE EXIT HANDLER FOR NOT FOUND
SET medianSalary = 6666;SET medianSalary = 0;
SELECT COUNT(*) INTO v_numRecords
FROM STAFF;
OPEN c1;
WHILE v_counter < (v_numRecords / 2 + 1)
DO
FETCH c1 INTO medianSalary;
SET v_counter = v_counter + 1;
END WHILE;
CLOSE c1;
OPEN c2;
END -
导入数据到DB2
2008-11-15 16:33:19
DB2导入数据自动动手操作吧!1、准备数据如将EXCLE里数据导入到DB2中,有什么办法呢?(1)安装Toad for db2(这软件很好用,但是也有BUG哦)(2)安装UE(ultraedit,网上有破解版本, 本人提供如下:注册码 Name: icycool and everybody Code: K7V0U-O6Q6W-E6J9Q-H2C9P-XW24V-0J441,版本号:13.0.1.0)******打开EXCEL,另存为扩展名为“.CSV”,建立扩展名为.DEL文本文件,如aa.del******打开扩展名为.CSV文件,复制内容后,粘贴到aa.del中。2、开始导入import from d:\aa.del of del insert into tb_test导入数据导出数据export to d:\aaaa.ixf of ixf select * from tb_test -
DB2学习(1)
2008-06-03 14:56:41
db2 tool实际上可以分为两大类:
control center (简称CC)
主要管理DB2服务器。
configuration Assistant(简称CA)
用来设置客户机/服务器通信和维护注册表变量等。
在任何db2工具中,都可以找到6种特性:
(1) wizards (向导)
向导可以用来在系统中添加数据库(对数据库进行编目)、创建数据库、备份数据库和恢复数据库、创建表、创建表空间、配置阶段提交、配置数据库日志、更新文档、调优性能等。
(2)Generate DDL (生成数据库描述语言)
允许重新生成数据库定义语言(data definition language) .
(3)show sql /show command
可以生成SQL语句或者db2命令
(4)show related
show related 特性显示表、索引、视图、别名、触发器、表空间、用户定义函数(UDF)和用户定义的类型(UDT)之间的直接关系。
(5)filter
在面板上可以直接过滤
(6)help
db2帮助是面向任务的,应该很容易执行特定任务
-
DB2常用命令总结
2007-10-16 12:12:57
db2命令介绍:
相比图形界面而言,使用命令行的命令可以节省很多内存资源。但是写的时候语法需要熟悉。
db2start:启动当前的DB2数据库管理实例。
db2stop:停止当前的数据库管理实例。
注:启动和关闭的是数据库管理实例,而不是单个的数据库,而restart database:并不是重新启动数据库,是平衡非正常结束而不一致状态的数据库,结束后,连接仍然存在。
db2look:能为表,索引,视图和诸如此类需要产生统计信息和数据定义语言(DDL)的对象产生需要的语句,以便重建数据库对象和/或更新统计信息。DB2CLP下直接db2look,可看到选项。 db2move:db2移动数据的一个工具,可以在两个不同的db2数据库间移动数据,这两个DB2数据库可以在不同的服务器上,尤其是大量数据的表需要转移的情况下,非常方便。 DB2CLP下直接db2move,可看到选项。
以下命令在“db2=>;”下键入“? Command”可以看到使用。
catalog:编目数据库或节点
uncatalog:删除已经编目的数据库或节点
这一对命令其实就实现了客户机配置辅助程序编目数据库的功能。
update:功能是更新数据库/数据库管理器配置参数,
更新命令行处理器设置和监控器的开关等。
connect:连接到一个数据库。
注:习惯显式的关闭连接。
attach:建立一个到实例的连接,执行实例级别的管理。
list:显示一些数据库对象或者设置的相关信息
get:获取一些数据库参数的设置和状态
runstats:运行统计,更新系统目录表中的信息。
backup:备份数据库
1、防止意外数据丢失或系统意外
2、重定向恢复实现整个数据库的迁移
3、AIX下的备份需要指定with n buffers 和 buffer size
restore:还原数据库
注:操作系统相同才可进行备份和恢复
force application:强行关闭应用程序或者连接
导入导出数据:
文件格式:
DEL:界定的ASCII文件,行分隔符和列分隔符将数据分开。常用
ASC:定长的ASCII文件,行按照行分割符分开,列定长。
PC/IXF:只能用来在db2之间导数据,根据类型数字值被打包成十进制或者二进制,字符被保存为ASCII,只保存变量已经使用了的长度,文件中包括表的定义和表的数据。
WSF:工作表方式导入导出,不建议使用。
export:导出数据,支持IXF,DEL或WSF
import:导入数据,可以向表或者视图中导入数据,支持上面提到的4中文件。
注:当一个表中的主键被其他表引用为外键时,导入数据只能选APPEND,不能选替换。
load:导入数据,功能和import基本相同。支持以上说的4种格式。Load最大的缺点是变化没有记录日志,不能前滚恢复。
Load的工作步骤:
1、载入阶段:
把数据载入到表中
收集并存储索引
2、建立阶段
建立载入阶段收集的索引
3、删除阶段
把违反唯一键或主键约束的记录放到例外表中
删除违反主键和唯一键约束的记录
注:自动生成列数据导入问题。
Load完毕之后:
Load程序可以将表或者表所在的表空间处于挂起状态。
1、载入挂起:在载入阶段发生错误,表空间处于此状态
解决方法:
A:纠正错误后重新载入,将replace或者insert换成restart。将从失败处重新开始装载操作。
B:如果前面调用用了replace,则再使用replace做load。
C:用terminate选项终止load操作。
D:DBA撤消并重新建立表空间
E:从一个备份中恢复表空间(归档日志下才可以)。
2、删除挂起:在删除阶段发生错误,将一直处于删除挂起状态。
3、备份挂起:这种策略是强迫用户对目标表所在的数据库或者表空间做一个备份。如果load是使用了copy no选项,并且开启了归档日志,load完后将处于该状态。做一个备份就可以消除该状态。
4、检查挂起的表:当表上存在主键和唯一键之外的约束时,load完后表将处于该状态。包括以下情况:
外键约束—用来强制执行内容的完整性。
检查约束—用户定义的约束,检查合法性。
操作中引用了summary表,并且表设置的为refresh immediate。
可以使用如下命令解除该状态:
SET CONSTRAINTS FOR TABNAME IMMEDIATE CHECKED FOR EXCEPTION IN EXP_TABLE
load和import的不同:
1、load的目标表必须存在,而import不需要
2、load并不创建索引,只是在原来索引的基础上追加数据
3、最大区别在于性能区别,import每次插入一条,每行都要进行一次限制检查,日志用来记录变化,而load插入则快的多,每次读取数据构造页,然后直接输入到数据库。插入完页后,索引将重新建立,违反主键和唯一键限制的记录将被删除并保存到另一个扩展表中。
注:load技巧使用:大数据量删除。
load from a.del of del replace into table -
SQL serve 2005 数据库被置为可疑,怎么办?
2007-10-13 15:33:11
标题搜索
我的存档
数据统计
- 访问量: 30249
- 日志数: 34
- 图片数: 6
- 建立时间: 2007-09-29
- 更新时间: 2011-01-24