﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-黑咖啡-随笔分类-DataBase</title><link>http://www.blogjava.net/kyleYang/category/44087.html</link><description>孩儿立志出乡关，学不成名誓不还。
风华正茂乾坤地，人生无处不青山。
光阴如同流水去，珍惜时光最宝贵。
鹏程万里靠自己，飞黄腾达青少年。
</description><language>zh-cn</language><lastBuildDate>Fri, 30 Jul 2010 10:20:59 GMT</lastBuildDate><pubDate>Fri, 30 Jul 2010 10:20:59 GMT</pubDate><ttl>60</ttl><item><title>DB2递归查询</title><link>http://www.blogjava.net/kyleYang/archive/2010/07/30/327585.html</link><dc:creator>飞熊</dc:creator><author>飞熊</author><pubDate>Fri, 30 Jul 2010 08:36:00 GMT</pubDate><guid>http://www.blogjava.net/kyleYang/archive/2010/07/30/327585.html</guid><wfw:comment>http://www.blogjava.net/kyleYang/comments/327585.html</wfw:comment><comments>http://www.blogjava.net/kyleYang/archive/2010/07/30/327585.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kyleYang/comments/commentRss/327585.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kyleYang/services/trackbacks/327585.html</trackback:ping><description><![CDATA[
		<p>db2中的递归查询使用with来实现，也称为公共表达式，公共表达式在select语句的开始部分采用with子句的形式，在使用公共表达式的查询中可以多次使用它，并且公共表达式还可以通过取别名来连接到他本身，这样的话就可以达到循环的目的。<br />递归查询通常有3个部分需要定义：<br />一：一个公共表达式形式的虚拟表。<br />二：一个初始化表。<br />三：一个与虚拟表进行完全内连接的辅助表。<br />需要使用UNION all合并上边3个查询，然后用select从递归输出中得到最终的结果。<br />大体上如下形式<br />with XX(x1,x2,x3) as  <a href="mailto:-------@0">-------@0</a><br />(<br /> select a.s,a.s1 from a  <a href="mailto:----@1">----@1</a><br /> union all  <a href="mailto:----@2">----@2</a><br /> select * from a,xx where a.s=xx.x1 <a href="mailto:------@3">------@3</a><br />)<br />select ... from xx where .... <a href="mailto:-------@4">-------@4</a><br />@0:为with体，即虚拟表<br />@1:为初始化表，这里需要定义初始化的一些行，也就是你递归的出发点，或者说父行，这部分逻辑只执行一次，它的结果作为虚拟表递归的初始化内容。<br />@2:这里必须用UNION all<br />@3:这里需要定义递归的条件（辅助表），这里定义递归的逻辑，需要注意的是父行和子行进行连接的时候逻辑一定要清楚父子关系，不然很容易变成死循环的，这里首先将初始化表的结果作为条件进行查询，在把执行的结果添加到虚拟表中，只要这里能查询出来记录，那么就会进行下一步递归循环。<br />@4:这里就是对虚拟表的查询语句。<br /><br />例子：<br />WITH ROOT AS <br />(<br /> SELECT a.id, a.areaname<br /> FROM AREATB a<br /> WHERE a.id = #id#<br /> UNION ALL<br /> SELECT a.id, a.areaname<br /> FROM AREATB a, ROOT r<br /> WHERE a.id = r.id<br />)</p>
		<p>SELECT id, areaname<br />FROM ROOT</p>
<img src ="http://www.blogjava.net/kyleYang/aggbug/327585.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kyleYang/" target="_blank">飞熊</a> 2010-07-30 16:36 <a href="http://www.blogjava.net/kyleYang/archive/2010/07/30/327585.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Db2的常用命令和导入导出</title><link>http://www.blogjava.net/kyleYang/archive/2010/04/16/318498.html</link><dc:creator>飞熊</dc:creator><author>飞熊</author><pubDate>Fri, 16 Apr 2010 03:41:00 GMT</pubDate><guid>http://www.blogjava.net/kyleYang/archive/2010/04/16/318498.html</guid><wfw:comment>http://www.blogjava.net/kyleYang/comments/318498.html</wfw:comment><comments>http://www.blogjava.net/kyleYang/archive/2010/04/16/318498.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kyleYang/comments/commentRss/318498.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kyleYang/services/trackbacks/318498.html</trackback:ping><description><![CDATA[db2命令介绍：    <br />相比图形界面而言，使用命令行的命令可以节省很多内存资源。但是写的时候语法需要熟悉。<br />        db2start：启动当前的DB2数据库管理实例。 <br />        db2stop：停止当前的数据库管理实例。<br />     注：启动和关闭的是数据库管理实例，而不是单个的数据库，而restart database：并不是重新启动数据库，是平衡非正常结束而不一致状态的数据库，结束后，连接仍然存在。<br />        db2look：能为表，索引，视图和诸如此类需要产生统计信息和数据定义语言（DDL）的对象产生需要的语句，以便重建数据库对象和/或更新统计信息。 DB2CLP下直接db2look，可看到选项。 db2move：db2移动数据的一个工具，可以在两个不同的db2数据库间移动数据，这两个DB2数据库可以在不同的服务器上，尤其是大量数据的表需要转移的情况下，非常方便。 DB2CLP下直接db2move，可看到选项。 <br />      <br />以下命令在“db2=&gt;;”下键入“? Command”可以看到使用。<br />       catalog：编目数据库或节点<br />       uncatalog：删除已经编目的数据库或节点<br />       这一对命令其实就实现了客户机配置辅助程序编目数据库的功能。<br />       update：功能是更新数据库/数据库管理器配置参数，<br />更新命令行处理器设置和监控器的开关等。<br />       connect：连接到一个数据库。<br />       注：习惯显式的关闭连接。<br />attach：建立一个到实例的连接，执行实例级别的管理。<br />   list：显示一些数据库对象或者设置的相关信息<br />      get：获取一些数据库参数的设置和状态<br />   runstats：运行统计，更新系统目录表中的信息。<br />   backup：备份数据库<br />        1、防止意外数据丢失或系统意外<br />        2、重定向恢复实现整个数据库的迁移<br />        3、AIX下的备份需要指定with n buffers 和 buffer size<br />      restore：还原数据库<br />注：操作系统相同才可进行备份和恢复<br />      force application：强行关闭应用程序或者连接<br />导入导出数据：<br />文件格式：<br />DEL：界定的ASCII文件，行分隔符和列分隔符将数据分开。常用<br />ASC：定长的ASCII文件，行按照行分割符分开，列定长。<br />PC/IXF：只能用来在db2之间导数据，根据类型数字值被打包成十进制或者二进制，字符被保存为ASCII，只保存变量已经使用了的长度，文件中包括表的定义和表的数据。<br />WSF：工作表方式导入导出，不建议使用。<br />export：导出数据，支持IXF，DEL或WSF<br />import：导入数据，可以向表或者视图中导入数据，支持上面提到的4中文件。<br />注：当一个表中的主键被其他表引用为外键时，导入数据只能选APPEND，不能选替换。    <br />load：导入数据，功能和import基本相同。支持以上说的4种格式。Load最大的缺点是变化没有记录日志，不能前滚恢复。<br />Load的工作步骤：<br />1、载入阶段：<br />把数据载入到表中<br />收集并存储索引<br />2、建立阶段<br />建立载入阶段收集的索引<br />3、删除阶段<br />把违反唯一键或主键约束的记录放到例外表中<br />删除违反主键和唯一键约束的记录<br />注：自动生成列数据导入问题。<br />Load完毕之后：<br />Load程序可以将表或者表所在的表空间处于挂起状态。<br />1、载入挂起：在载入阶段发生错误，表空间处于此状态<br />   解决方法：<br />    A：纠正错误后重新载入，将replace或者insert换成restart。将从失败处重新开始装载操作。<br />    B：如果前面调用用了replace，则再使用replace做load。<br />    C：用terminate选项终止load操作。<br />    D：DBA撤消并重新建立表空间<br />    E：从一个备份中恢复表空间（归档日志下才可以）。<br />2、删除挂起：在删除阶段发生错误，将一直处于删除挂起状态。<br />3、备份挂起：这种策略是强迫用户对目标表所在的数据库或者表空间做一个备份。如果load是使用了copy no选项，并且开启了归档日志，load完后将处于该状态。做一个备份就可以消除该状态。<br />4、检查挂起的表：当表上存在主键和唯一键之外的约束时，load完后表将处于该状态。包括以下情况：<br />  外键约束—用来强制执行内容的完整性。<br />  检查约束—用户定义的约束，检查合法性。<br />  操作中引用了summary表，并且表设置的为refresh immediate。<br />可以使用如下命令解除该状态：<br />SET CONSTRAINTS FOR TABNAME IMMEDIATE CHECKED FOR EXCEPTION IN EXP_TABLE<br />load和import的不同：<br />1、load的目标表必须存在，而import不需要<br />2、load并不创建索引，只是在原来索引的基础上追加数据<br />3、最大区别在于性能区别，import每次插入一条，每行都要进行一次限制检查，日志用来记录变化，而load插入则快的多，每次读取数据构造页，然后直接输入到数据库。插入完页后，索引将重新建立，违反主键和唯一键限制的记录将被删除并保存到另一个扩展表中。<br />注：load技巧使用：大数据量删除。<br /><br /><br />Db2 下导出表结构及数据<br />su db2inst  - 进入db2权限模式<br />任意建立一个文件夹子 mkdir data<br />进入文件夹子 cd data<br />导出表结构:使用db2look -d 库名 -e -z 用户名 -l -o exoa.sql<br />导出数据:使用db2move 库名 export<br />可使用以下命令查看: db2look -help or db2move -help<br />打包已导出的表结构与数据 tar zcvf 目录名.tar.gz 目录名/<br />在新的db2导入数据<br />创建数据库: db2 create db 库名<br />导入表结构操作:db2 -tvf 文件名.sql<br />导入数据操作:db2move 新建库名 load<br /><br />导出表中数据<br />export to [path(例<img alt="" src="http://bbs.51cto.com/images/smilies/default/biggrin.gif" border="0" smilieid="3" />:\TABLE1.ixf)] of ixf select [字段(例: * or col1,col2,col3)] from TABLE1;<br />export to [path(例<img alt="" src="http://bbs.51cto.com/images/smilies/default/biggrin.gif" border="0" smilieid="3" />:\TABLE1.del)] of del select [字段(例: * or col1,col2,col3)] from TABLE1;<br /><br />导入表的数据<br />import from [path(例<img alt="" src="http://bbs.51cto.com/images/smilies/default/biggrin.gif" border="0" smilieid="3" />:\TABLE1.ixf)] of ixf insert into TABLE1;<br />load from [path(例<img alt="" src="http://bbs.51cto.com/images/smilies/default/biggrin.gif" border="0" smilieid="3" />:\TABLE1.ixf)] of ixf insert into TABLE1;<br />load from [path(例<img alt="" src="http://bbs.51cto.com/images/smilies/default/biggrin.gif" border="0" smilieid="3" />:\TABLE1.ixf)] of ixf replace into TABLE1; // 装入数据前，先删除已存在记录<br />load from [path(例<img alt="" src="http://bbs.51cto.com/images/smilies/default/biggrin.gif" border="0" smilieid="3" />:\TABLE1.ixf)] of ixf restart into TABLE1; // 当装入失败时，重新执行<br /><br />并记录导出结果和错误信息<br />import from [path(例<img alt="" src="http://bbs.51cto.com/images/smilies/default/biggrin.gif" border="0" smilieid="3" />:\TABLE1.ixf)] of ixf savecount 1000 messages [path(例<img alt="" src="http://bbs.51cto.com/images/smilies/default/biggrin.gif" border="0" smilieid="3" />:\msg.txt)] insert into TABLE1;// 其中，savecount表示完成每1000条操作，记录一次.<br />存在自增长字段的数据导入：<br />load from [path(例<img alt="" src="http://bbs.51cto.com/images/smilies/default/biggrin.gif" border="0" smilieid="3" />:\TABLE1.ixf)] of ixf modified by identityignore insert into TABLE1;// 加入modified by identityignore.<br /><br />解除装入数据时，发生的检查挂起.<br />SET INTEGRITY FOR  TABLE1 CHECK IMMEDIATE UNCHECKED;<br />命令只对数据通过约束检查的表有效，如果执行还不能解除，有必要检查数据的完整性，是否不符合约束条件，并试图重新整理数据，再执行装入操作.<br />另外，对load和import，字面上的区别是:装入和导入，但仍未理解两者之间的区别.<br />只是性能上load显然优于import<br /><br /><br /><br /><br /><br /><br />连接数据库：<br />  connect to [数据库名] user [操作用户名] using [密码]<br />创建缓冲池(8K)：<br />  create bufferpool ibmdefault8k IMMEDIATE  SIZE 5000 PAGESIZE 8 K ;<br />创建缓冲池(16K)(OA_DIVERTASKRECORD)：<br />  create bufferpool ibmdefault16k IMMEDIATE  SIZE 5000 PAGESIZE 16 K ;<br />创建缓冲池(32K)(OA_TASK)：<br />  create bufferpool ibmdefault32k IMMEDIATE  SIZE 5000 PAGESIZE 32 K ;<br />创建表空间：<br />  CREATE TABLESPACE exoatbs IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 8K MANAGED BY SYSTEM USING ('/home/exoa2/exoacontainer') EXTENTSIZE 32 PREFETCHSIZE 16  BUFFERPOOL IBMDEFAULT8K  OVERHEAD 24.10 TRANSFERRATE 0.90  DROPPED TABLE RECOVERY OFF;<br />  CREATE TABLESPACE exoatbs16k  IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 16K MANAGED BY SYSTEM USING ('/home/exoa2/exoacontainer16k'   ) EXTENTSIZE 32  PREFETCHSIZE 16  BUFFERPOOL IBMDEFAULT16K  OVERHEAD 24.1 TRANSFERRATE 0.90  DROPPED TABLE RECOVERY OFF;<br />  CREATE TABLESPACE exoatbs32k  IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 32K MANAGED BY SYSTEM USING ('/home/exoa2/exoacontainer32k'   ) EXTENTSIZE 32  PREFETCHSIZE 16  BUFFERPOOL IBMDEFAULT32K  OVERHEAD 24.1 TRANSFERRATE 0.90  DROPPED TABLE RECOVERY OFF;<br />GRANT USE OF TABLESPACE exoatbs TO PUBLIC;<br />GRANT USE OF TABLESPACE exoatbs16k TO PUBLIC;<br />GRANT USE OF TABLESPACE exoatbs32k TO PUBLIC;<br />创建系统表空间：<br />  CREATE TEMPORARY TABLESPACE exoasystmp IN DATABASE PARTITION GROUP IBMTEMPGROUP PAGESIZE 8K  MANAGED BY SYSTEM USING ('/home/exoa2/exoasystmp'   ) EXTENTSIZE 32 PREFETCHSIZE 16 BUFFERPOOL IBMDEFAULT8K  OVERHEAD 24.10 TRANSFERRATE 0.90  DROPPED TABLE RECOVERY OFF;<br />  CREATE TEMPORARY TABLESPACE exoasystmp16k IN DATABASE PARTITION GROUP IBMTEMPGROUP PAGESIZE 16K MANAGED BY SYSTEM USING ('/home/exoa2/exoasystmp16k'  ) EXTENTSIZE 32 PREFETCHSIZE 16 BUFFERPOOL IBMDEFAULT16K OVERHEAD 24.10 TRANSFERRATE 0.90  DROPPED TABLE RECOVERY OFF;<br />  CREATE TEMPORARY TABLESPACE exoasystmp32k IN DATABASE PARTITION GROUP IBMTEMPGROUP PAGESIZE 32K MANAGED BY SYSTEM USING ('/home/exoa2/exoasystmp32k') EXTENTSIZE 32 PREFETCHSIZE 16 BUFFERPOOL IBMDEFAULT32K OVERHEAD 24.10 TRANSFERRATE 0.90  DROPPED TABLE RECOVERY OFF;<br />1. 启动实例(db2inst1):<br />db2start<br />2. 停止实例(db2inst1):<br />db2stop<br />3. 列出所有实例(db2inst1)<br />db2ilist<br />5.列出当前实例:<br />db2 get instance<br />4. 察看示例配置文件:<br />db2 get dbm cfg|more<br />5. 更新数据库管理器参数信息:<br />db2 update dbm cfg using para_name para_value<br />6. 创建数据库:<br />db2 create db test<br />7. 察看数据库配置参数信息<br />db2 get db cfg for test|more<br />8. 更新数据库参数配置信息<br />db2 update db cfg for test using para_name para_value<br />10.删除数据库:<br />db2 drop db test<br />11.连接数据库<br />db2 connect to test<br />12.列出所有表空间的详细信息。<br />db2 list tablespaces show detail<br />13.查询数据:<br />db2 select * from tb1<br />14.删除数据:<br />db2 delete from tb1 where id=1<br />15.创建索引:<br />db2 create index idx1 on tb1(id);<br />16.创建视图:<br />db2 create view view1 as select id from tb1<br />17.查询视图:<br />db2 select * from view1<br />18.节点编目<br />db2 catalog tcp node node_name remote server_ip server server_port<br />19.察看端口号<br />db2 get dbm cfg|grep SVCENAME<br />20.测试节点的附接<br />db2 attach to node_name<br />21.察看本地节点<br />db2 list node direcotry<br />22.节点反编目<br />db2 uncatalog node node_name<br />23.数据库编目<br />db2 catalog db db_name as db_alias at node node_name<br />24.察看数据库的编目<br />db2 list db directory<br />25.连接数据库<br />db2 connect to db_alias user user_name using user_password<br />26.数据库反编目<br />db2 uncatalog db db_alias<br />27.导出数据<br />db2 export to myfile of ixf messages msg select * from tb1<br />28.导入数据<br />db2 import from myfile of ixf messages msg replace into tb1<br />29.导出数据库的所有表数据<br />db2move test export<br />30.生成数据库的定义<br />db2look -d db_alias -a -e -m -l -x -f -o db2look.sql<br />31.创建数据库<br />db2 create db test1<br />32.生成定义<br />db2 -tvf db2look.sql<br />33.导入数据库所有的数据<br />db2move db_alias import<br />34.重组检查<br />db2 reorgchk<br />35.重组表tb1<br />db2 reorg table tb1<br />36.更新统计信息<br />db2 runstats on table tb1<br />37.备份数据库test<br />db2 backup db test<br />38.恢复数据库test<br />db2 restore db test<br />399\.列出容器的信息<br />db2 list tablespace containers for tbs_id show detail<br />40.创建表:<br />db2 ceate table tb1(id integer not null,name char(10))<br />41.列出所有表<br />db2 list tables<br />42.插入数据:<br />db2 insert into tb1 values(1,’sam’);<br />db2 insert into tb2 values(2,’smitty’);<br />. 建立数据库DB2_GCB<br />CREATE DATABASE DB2_GCB ON G: ALIAS DB2_GCB<br />USING CODESET GBK TERRITORY CN COLLATE USING SYSTEM DFT_EXTENT_SZ 32<br />2. 连接数据库<br />connect to sample1 user db2admin using 8301206<br />3. 建立别名<br />create alias db2admin.tables for sysstat.tables;<br />CREATE ALIAS DB2ADMIN.VIEWS FOR SYSCAT.VIEWS<br />create alias db2admin.columns for syscat.columns;<br />create alias guest.columns for syscat.columns;<br />4. 建立表<br />create table zjt_tables as<br />(select * from tables) definition only;<br />create table zjt_views as<br />(select * from views) definition only;<br />5. 插入记录<br />insert into zjt_tables select * from tables;<br />insert into zjt_views select * from views;<br />6. 建立视图<br />create view V_zjt_tables as select tabschema,tabname from zjt_tables;<br />7. 建立触发器<br />CREATE TRIGGER zjt_tables_del<br />AFTER DELETE ON zjt_tables<br />REFERENCING OLD AS O<br />FOR EACH ROW MODE DB2SQL<br />Insert into zjt_tables1 values(substr(o.tabschema,1,8),substr(o.tabname,1,10))<br />8. 建立唯一性索引<br />CREATE UNIQUE INDEX I_ztables_tabname<br /><font size="3">ON zjt_tables(tabname);<br />9. 查看表<br />select tabname from tables<br />where tabname='ZJT_TABLES';<br />10. 查看列<br />select SUBSTR(COLNAME,1,20) as 列名,TYPENAME as 类型,LENGTH as 长度<br />from columns<br />where tabname='ZJT_TABLES';<br />11. 查看表结构<br />db2 describe table user1.department<br />db2 describe select * from user.tables<br />12. 查看表的索引<br />db2 describe indexes for table user1.department<br />13. 查看视图<br />select viewname from views<br />where viewname='V_ZJT_TABLES';<br />14. 查看索引<br />select indname from indexes<br />where indname='I_ZTABLES_TABNAME';<br />15. 查看存贮过程<br />SELECT SUBSTR(PROCSCHEMA,1,15),SUBSTR(PROCNAME,1,15)<br />FROM SYSCAT.PROCEDURES;<br />16. 类型转换(cast)<br />ip datatype:varchar<br />select cast(ip as integer)+50 from log_comm_failed<br />17. 重新连接<br />connect reset<br />18. 中断数据库连接<br />disconnect db2_gcb<br />19. view application<br />LIST APPLICATION;<br />20. kill application<br />FORCE APPLICATION(0);<br />db2 force applications all (强迫所有应用程序从数据库断开)<br />21. lock table<br />lock table test in exclusive mode<br />22. 共享<br />lock table test in share mode<br />23. 显示当前用户所有表<br />list tables<br />24. 列出所有的系统表<br />list tables for system<br />25. 显示当前活动数据库<br />list active databases<br />26. 查看命令选项<br />list command options<br />27. 系统数据库目录<br />LIST DATABASE DIRECTORY<br />28. 表空间<br />list tablespaces<br />29. 表空间容器<br />LIST TABLESPACE CONTAINERS FOR<br />Example: LIST TABLESPACE CONTAINERS FOR 1<br />30. 显示用户数据库的存取权限<br />GET AUTHORIZATIONS<br />31. 启动实例<br />DB2START<br />32. 停止实例<br />db2stop<br />33. 表或视图特权<br />grant select,delete,insert,update on tables to user<br />grant all on tables to user WITH GRANT OPTION<br />34. 程序包特权<br />GRANT EXECUTE<br />ON PACKAGE PACKAGE-name<br />TO PUBLIC<br />35. 模式特权<br />GRANT CREATEIN ON SCHEMA SCHEMA-name TO USER<br />36. 数据库特权<br />grant connect,createtab,dbadm on database to user<br />37. 索引特权<br />grant control on index index-name to user<br />38. 信息帮助 (? XXXnnnnn )<br />例:? SQL30081<br />39. SQL 帮助(说明 SQL 语句的语法)<br />help statement<br />例如，help SELECT<br />40. SQLSTATE 帮助(说明 SQL 的状态和类别代码)<br />? sqlstate 或 ? class-code<br />41. 更改与"管理服务器"相关的口令<br />db2admin setid username password<br />42. 创建 SAMPLE 数据库<br />db2sampl<br />db2sampl F<img alt="" src="http://bbs.51cto.com/images/smilies/default/sad.gif" border="0" smilieid="2" />指定安装盘)<br />43. 使用操作系统命令<br />! dir<br />44. 转换数据类型 (cast)<br />SELECT EMPNO, CAST(RESUME AS VARCHAR(370))<br />FROM EMP_RESUME<br />WHERE RESUME_FORMAT = 'ascii'<br />45. UDF<br />要运行 DB2 Java 存储过程或 UDF，还需要更新服务器上的 DB2 数据库管理程序配置，以包括在该机器上安装 JDK 的路径<br />db2 update dbm cfg using JDK11_PATH d:sqllibjavajdk<br />TERMINATE<br />update dbm cfg using SPM_NAME sample<br />46. 检查 DB2 数据库管理程序配置<br />db2 get dbm cfg<br />47. 检索具有特权的所有授权名<br />SELECT DISTINCT GRANTEE, GRANTEETYPE, 'DATABASE' FROM SYSCAT.DBAUTH<br />UNION<br />SELECT DISTINCT GRANTEE, GRANTEETYPE, 'TABLE ' FROM SYSCAT.TABAUTH<br />UNION<br />SELECT DISTINCT GRANTEE, GRANTEETYPE, 'PACKAGE ' FROM SYSCAT.PACKAGEAUTH<br />UNION<br />SELECT DISTINCT GRANTEE, GRANTEETYPE, 'INDEX ' FROM SYSCAT.INDEXAUTH<br />UNION<br />SELECT DISTINCT GRANTEE, GRANTEETYPE, 'COLUMN ' FROM SYSCAT.COLAUTH<br />UNION<br />SELECT DISTINCT GRANTEE, GRANTEETYPE, 'SCHEMA ' FROM SYSCAT.SCHEMAAUTH<br />UNION<br />SELECT DISTINCT GRANTEE, GRANTEETYPE, 'SERVER ' FROM SYSCAT.PASSTHRUAUTH<br />ORDER BY GRANTEE, GRANTEETYPE, 3<br />create table yhdab<br />(id varchar(10),<br />password varchar(10),<br />ywlx varchar(10),<br />kh varchar(10));<br />create table ywlbb<br />(ywlbbh varchar(8),<br />ywmc varchar(60))<br />48. 修改表结构<br />alter table yhdab ALTER kh SET DATA TYPE varchar(13);<br />alter table yhdab ALTER ID SET DATA TYPE varchar(13);<br />alter table lst_bsi alter bsi_money set data type int;<br />insert into yhdab values<br />('20000300001','123456','user01','20000300001'),<br />('20000300002','123456','user02','20000300002');<br />49. 业务类型说明<br />insert into ywlbb values<br />('user01','业务申请'),<br />('user02','业务撤消'),<br />('user03','费用查询'),<br />('user04','费用自缴'),<br />('user05','费用预存'),<br />('user06','密码修改'),<br />('user07','发票打印'),<br />('gl01','改用户基本信息'),<br />('gl02','更改支付信息'),<br />('gl03','日统计功能'),<br />('gl04','冲帐功能'),<br />('gl05','对帐功能'),<br />('gl06','计费功能'),<br />('gl07','综合统计')<br />备份数据库：<br />CONNECT TO EXOA;<br />QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS;<br />CONNECT RESET;<br />BACKUP DATABASE EXOA TO "/home/exoa2/db2bak/" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING;<br />CONNECT TO EXOA;<br />UNQUIESCE DATABASE;<br />CONNECT RESET;<br />以下是小弟在使用db2move中的一些经验，希望对大家有所帮助。<br />db2   connect   to  YOURDB  <br />连接数据库<br />db2look -d  YOURDB  -a -e -x -o creatab.sql<br />导出建库表的SQL<br />db2move   YOURDB  export<br />用db2move将数据备份出来<br />vi   creatab.sql<br />如要导入的数据库名与原数据库不同，要修改creatab.sql中CONNECT 项<br />如相同则不用更改<br />db2move  NEWDB  load<br />将数据导入新库中<br />在导入中可能因为种种原因发生中断，会使数据库暂挂<br />db2    list tablespaces   show   detail<br />如：<br />      详细说明：<br />     装入暂挂<br />  总页数                           = 1652<br />可用页数                         = 1652<br />已用页数                          = 1652<br />空闲页数                          = 不适用<br />高水位标记（页）                 = 不适用<br />  页大小（字节）                    = 4096<br />盘区大小（页）                   = 32<br />预读取大小（页）                 = 32<br />  容器数                            = 1<br />状态更改表空间标识                     = 2<br />  状态更改对象标识                       = 59<br />db2 select tabname,tableid from syscat.tables where tableid=59<br />查看是哪张表挂起<br />表名知道后到db2move.lst(在db2move  YOURDB  export的目录中)中找到相应的.ixf文件<br />db2 load from tab11.ixf of ixf terminate into db2admin.xxxxxxxxx<br />tab11.ixf对应的是xxxxxxxxx表<br />数据库会恢复正常，可再用db2 list tablespaces show detail查看</font><img src ="http://www.blogjava.net/kyleYang/aggbug/318498.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kyleYang/" target="_blank">飞熊</a> 2010-04-16 11:41 <a href="http://www.blogjava.net/kyleYang/archive/2010/04/16/318498.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DB2数据库导出表结构与导入、导出表数据 </title><link>http://www.blogjava.net/kyleYang/archive/2010/03/01/314137.html</link><dc:creator>飞熊</dc:creator><author>飞熊</author><pubDate>Mon, 01 Mar 2010 02:18:00 GMT</pubDate><guid>http://www.blogjava.net/kyleYang/archive/2010/03/01/314137.html</guid><wfw:comment>http://www.blogjava.net/kyleYang/comments/314137.html</wfw:comment><comments>http://www.blogjava.net/kyleYang/archive/2010/03/01/314137.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kyleYang/comments/commentRss/314137.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kyleYang/services/trackbacks/314137.html</trackback:ping><description><![CDATA[
		<p>
				<span style="FONT-FAMILY: 宋体">方法一</span>
		</p>
		<p>
				<span style="FONT-FAMILY: 宋体">在控制中心的对象视图窗口中，选择所要导出表结构的数据表，按住</span>Ctrl<span style="FONT-FAMILY: 宋体">或</span>Shift<span style="FONT-FAMILY: 宋体">可多选，单击鼠标右键，选择－</span>&gt;<span style="FONT-FAMILY: 宋体">生成</span>DDL<span style="FONT-FAMILY: 宋体">即可。</span></p>
		<p>
				<span style="FONT-FAMILY: 宋体">方法二</span>
		</p>
		<p>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 宋体">第一步：打开</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 'Verdana','sans-serif'">DB2</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 宋体">的命令行工具，在</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 'Verdana','sans-serif'">DB2</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 宋体">安装目录的</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 'Verdana','sans-serif'">BIN</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 宋体">文件夹下新建一个文件夹</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 'Verdana','sans-serif'">data</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 宋体">，并且进入该目录。</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 'Verdana','sans-serif'">
						<br />
				</span>
				<span style="FONT-SIZE: 8.5pt; COLOR: #4b4b4b; FONT-FAMILY: 'Verdana','sans-serif'">
						<br />
				</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 宋体">创建该目录：</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 'Verdana','sans-serif'"> mkdir data<br /></span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 宋体">进入该目录：</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 'Verdana','sans-serif'"> cd data<br /></span>
				<span style="FONT-SIZE: 8.5pt; COLOR: #4b4b4b; FONT-FAMILY: 'Verdana','sans-serif'">|</span>
		</p>
		<p>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 宋体">第二步：导出表结构，命令行如下：</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 'Verdana','sans-serif'">
						<br />db2look -d dbname -e -a -x -i username -w password -o ddlfile.sql<br /></span>
				<span style="FONT-SIZE: 9pt; COLOR: #4b4b4b; FONT-FAMILY: 'Verdana','sans-serif'">
						<br />
						<br />
				</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 宋体">执行成功之后，你会在刚才新建的文件夹下找到该</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 'Verdana','sans-serif'">sql</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 宋体">文件。</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 'Verdana','sans-serif'">
						<br />
						<br />
				</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 宋体">第三步：</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 宋体">导出数据，命令行如下：</span>
				<span style="FONT-SIZE: 10pt; COLOR: #4b4b4b; FONT-FAMILY: 'Arial','sans-serif'">
						<br />db2move databasename export -u username -p password<br /></span>
				<span style="FONT-SIZE: 9pt; COLOR: #4b4b4b; FONT-FAMILY: 'Arial','sans-serif'">
						<br />
				</span>
		</p>
		<p>
				<span style="FONT-SIZE: 8.5pt; COLOR: #4b4b4b; FONT-FAMILY: 宋体">至此，导出数据结束。</span>
		</p>
		<p>2<span style="FONT-FAMILY: 宋体">导出表中数据</span></p>
		<p>export to [path(<span style="FONT-FAMILY: 宋体">例</span>:D:"TABLE1.ixf)] of ixf select [<span style="FONT-FAMILY: 宋体">字段</span>(<span style="FONT-FAMILY: 宋体">例</span>: * or col1,col2,col3)] from TABLE1;</p>
		<p>export to [path(<span style="FONT-FAMILY: 宋体">例</span>:D:"TABLE1.del)] of del select [<span style="FONT-FAMILY: 宋体">字段</span>(<span style="FONT-FAMILY: 宋体">例</span>: * or col1,col2,col3)] from TABLE1;</p>
		<p>
				<span style="FONT-FAMILY: 宋体">导入表的数据</span>
		</p>
		<p>import from [path(<span style="FONT-FAMILY: 宋体">例</span>:D:"TABLE1.ixf)] of ixf insert into TABLE1;</p>
		<p>load from [path(<span style="FONT-FAMILY: 宋体">例</span>:D:"TABLE1.ixf)] of ixf insert into TABLE1;</p>
		<p>load from [path(<span style="FONT-FAMILY: 宋体">例</span>:D:"TABLE1.ixf)] of ixf replace into TABLE1; // <span style="FONT-FAMILY: 宋体">装入数据前，先删除已存在记录</span></p>
		<p>load from [path(<span style="FONT-FAMILY: 宋体">例</span>:D:"TABLE1.ixf)] of ixf restart into TABLE1; // <span style="FONT-FAMILY: 宋体">当装入失败时，重新执行，并记录导出结果和错误信息</span></p>
		<p>import from [path(<span style="FONT-FAMILY: 宋体">例</span>:D:"TABLE1.ixf)] of ixf savecount 1000 messages [path(<span style="FONT-FAMILY: 宋体">例</span>:D:"msg.txt)] insert into TABLE1;// <span style="FONT-FAMILY: 宋体">其中，</span>savecount<span style="FONT-FAMILY: 宋体">表示完成每</span>1000<span style="FONT-FAMILY: 宋体">条操作，记录一次</span>.</p>
		<p>
				<span style="FONT-FAMILY: 宋体">存在自增长字段的数据导入：</span>
		</p>
		<p>load from [path(<span style="FONT-FAMILY: 宋体">例</span>:D:"TABLE1.ixf)] of ixf modified by identityignore insert into TABLE1;// <span style="FONT-FAMILY: 宋体">加入</span>modified by identityignore.</p>
		<p>
				<span style="FONT-FAMILY: 宋体">解除装入数据时，发生的检查挂起</span>.</p>
		<p>SET INTEGRITY FOR TABLE1 CHECK IMMEDIATE UNCHECKED;</p>
		<p>
				<span style="FONT-FAMILY: 宋体">命令只对数据通过约束检查的表有效，如果执行还不能解除，有必要检查数据的完整性，是否不符合约束条件，并试图重新整理数据，再执行装入操作</span>.</p>
		<p>
				<span style="FONT-FAMILY: 宋体">另外，对</span>load<span style="FONT-FAMILY: 宋体">和</span>import<span style="FONT-FAMILY: 宋体">，字面上的区别是</span>:<span style="FONT-FAMILY: 宋体">装入和导入，但仍未理解两者之间的区别</span>.</p>
		<p>
				<span style="FONT-FAMILY: 宋体">只是性能上</span>load<span style="FONT-FAMILY: 宋体">显然优于</span>import.<span style="FONT-FAMILY: 宋体">（</span>load <span style="FONT-FAMILY: 宋体">需要更多的权限）</span></p>
<img src ="http://www.blogjava.net/kyleYang/aggbug/314137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kyleYang/" target="_blank">飞熊</a> 2010-03-01 10:18 <a href="http://www.blogjava.net/kyleYang/archive/2010/03/01/314137.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>