db2 常用命令

原创 2007年10月10日 12:56:00

1.连接数据库
db2 => connect to bidb_dev user UID using PASSWORD

要隐藏密码,就:
db2 => connect to bidb_dev user UID  回车
密码  回车

2.数据查询:
(1)select * from tableName;
(2)表关连:内连接,外连接

外连接有3种,左关联,右关联,完全连接
左关联,
Select T1.* FROM CORINFO.RV_ISTRSSTS T1 LEFT OUTER JOIN SESSION.TAB_CUTCOD T2 ON T1.CUT_COD = T2.CUT_COD      LEFT OUTER JOIN CORDIM.CM_CRYRAT T3 ON T1.CR_CCY = T3.CRY_NUM LEFT OUTER JOIN SESSION.TAB_BRNCOD T4 ON T1.BRN_NBR = T4.DEP_NBR

完全连接:
Select T1.* FROM CORINFO.RV_ISTRSSTS T1 FULL OUTER JOIN SESSION.TAB_CUTCOD T2 ON T1.CUT_COD = T2.CUT_COD    
(3)把表内关连放进where语句,和条件是一样的

3.在列里的条件选择:

select  (CASE WHEN T1.EYDT >= v_BeginLastYear
          AND T1.EYDT <= v_NowLastYear
          AND T1.CR_CCY <> '21'
          AND T1.CR_CCY <> '32'
          THEN T1.CR_AMT*T3.CON_USD ELSE 0 END)
       from Tab_Nname ;
Case when  可以嵌套,相当于Oracle 里的Decode, SqlServer里也有 Case When用法一样;他是在数据被查询出来后,进行计算;
4、只查询几行:
select * from TabName FETCH FIRST 12 ROWS ONLY ;  这样就会只返回前12行

5.排名:查询类似排名,得问题(似乎没什么用处)
SELECT ROW_NUMBER() OVER() AS "排名"  from TAB_NAME;

6.为空字段的处理:为空的字段是不能比较的, 下面的写法是错误的:
Select * from Tab_name where c1  =  NULL;
要用 : Select * from Tab_name where c1  is  NULL;
如果,要为空 则等于 一个默认值的话,可以这样
Select  case when Cl is NULL then 250 end from TAB_name;
有一个现成的函数供使用:
COALESCE(T1.MOD_NBR,0)   他的含义是,如果T1.MOD_NBR,不为空,则结果是T1.MOD_NBR,否则为0;这对于 用Sum()函数求和是非常有用的;否则会因为有一条数据为空,只是返回的结果,都为空; 因为任何数 + 空 ,都是空;
还可以写成Value(T1.MOD_NBR,0) , 也就是说 COALESCE(T1.MOD_NBR,0) = Value(T1.MOD_NBR,0)
但据我个人经验,这种处理,效率很低,尽量不要用;

7.表的相关操作:
建表语句:
drop table AdBaseInfo;(删除表)
Create table AdBaseInfo
(
    ADID            CHAR(16) NOT NULL,
    ACT_SQNO        CHAR(5)  NOT NULL,
    Rctime          timestamp default currenttime,
    primary key (ADID)
)
IN INDADV

   INDEX IN IDX_INDADV
   comment on table  AdBaseInfo               is '基本信息表';
   comment on column AdBaseInfo.ADID          is '标识';
其他选项:
NOT LOGGED – 不记录日志,也不能会滚;

删除表:
Drop Table TableName;

清空表:
DB2,没有像Oracle等数据库的Trancat 语句,但可以用C语言写一个函数,新建一个文件,用空文件,覆盖掉原有文件,就起到了同样的效果;

查找存储过程的源码:
describe table fmc.work_item

8.执行文件命令:
例如建表语句,批处理等命令,写进一个文件,写好了后,统一执行
db2  –td@  -f   rb_query.db2
说明:rb_query.db2是命令文件,  -f 表示是命令文件, -td; 表示文件每个命令之间用分号分开,也可以是db2  –td@  -f   rb_query.db2 ,这样rb_query.db2 美革命的结束标志就是:@

9.错误编码的查询
数据经常会报错,但错误,之多,你也搞不清楚是什么错,这个时候就会用到错误码,
DB2的错误码有2种表达方式:SQLSTATE 和 SQLCODE,他们编码不同,他们是一一对应的,查询具体错误码的含义:
例如:SQLSTATE,是 12345 ,SQLCODE是 987
SQLSTATE :  C:/> DB2 ?  23505
SQLCODE = -803,    C:/> Db2 ?  SQL0803  -- 注意前边加上 SQL,并且补0

10.查当前用户所有的表

SELECT * FROM SYSIBM.SYSTABLES  WHERE CREATOR='PBLTZ'
有时候上边这句不好用,就用下边这句:
list tables for schema FMC

11查当前用户所有的View
select * from sysibm.sysviews WHEREC CREATOR='PBLTZ'

12查当前的表结构
describe table table_name
describe select * from table_name

13.DB2的数据类型
select * from sysibm.SYSDATATYPES

14.如何知道表的字段的状况?
select * from sysibm.SYSCOLUMNS WHERE TBNAME='WORK_ITEM'

15.日期常量
'01-02-2002'  ,('01-02-2002'),to_date('01-02-2002'),date('01-02-2002')

16.取当前时间?
  Select current timestamp from sysibm.sysdummy1


17.连接2个字符字段:
Select name||owner from fmc.work_item;

18.truancate 表:alter table table_name active not logged initially with empty table

19.查看表空间的使用状况: list tablespace containers for 你的表空间号 show detail
list tablespace containers for 1 show detail
list tablespaces show detail 全部

20.增加表空间:ALTER TABLESPACE RISK_DATA_1 ADD(FILE '/db2inst1/risk/data3.dat' 25000) –是以4K为单位的,实际上是增加了1G


21.列举机器的数据源:list user ODBC data sources

22.本地已经连接的节点  list node directory

23.RUNSTATS ON TABLE fmc.work_item ON ALL COLUMNS WITH DISTRIBUTION AND DETAILED INDEXES ALL ALLOW READ ACCESS
 
24.连接远程数据库:
db2 catalog TCPIP NODE runnode remote 99.1.57.23 server 50000
db2   catalog  db calldb as calldb2 at node runnode
connect to calldb2 user .. using ..

1.启动数据库
     db2start
2.停止数据库
     db2stop
3.连接数据库
     db2 connect to o_yd user db2 using pwd
4.读数据库管理程序配置
     db2 get dbm cfg
5.写数据库管理程序配置
     db2 update dbm cfg using 参数名 参数值
6.读数据库的配置
     db2 connect to o_yd user db2 using pwd
     db2 get db cfg for o_yd
7.写数据库的配置
     db2 connect to o_yd user db2 using pwd
     db2 update db cfg for o_yd using 参数名 参数值
8.关闭所有应用连接
     db2 force application all
     db2 force application ID1,ID2,,,Idn MODE ASYNC
     (db2 list application for db o_yd show detail)
9.备份数据库
     db2 force application all
     db2 backup db o_yd to d:
    (db2 initialize tape on //./tape0)
    (db2 rewind tape on //./tape0)
    db2 backup db o_yd to //./tape0
10.恢复数据库
    db2 restore db o_yd from d: to d:
    db2 restore db o_yd from //./tape0 to d:
11.绑定存储过程
   db2 connect to o_yd user db2 using pwd
   db2 bind c:/dfplus.bnd
  拷贝存储过程到服务器上的C:/sqllib/function目录中
12.整理表
    db2 connect to o_yd user db2 using pwd
    db2 reorg table ydd
    db2 runstats on table ydd with distribution and indexes all

13.导出表数据
     db2 export to c:/dftz.txt of del select * from dftz
     db2 export to c:/dftz.ixf of ixf select * from dftz
14.导入表数据
import from c:/123.txt of del  insert into ylbx.czyxx
db2 import to c:/dftz.txt of del commitcount 5000 messages  c:/dftz.msg insert into dftz
db2 import to c:/dftz.ixf of ixf commitcount 5000 messages c:/dftz.msg insert into dftz
db2 import to c:/dftz.ixf of ixf commitcount 5000 insert into dftz
db2 import to c:/dftz.ixf of ixf commitcount 5000 insert_update into dftz
db2 import to c:/dftz.ixf of ixf commitcount 5000 replace into dftz
db2 import to c:/dftz.ixf of ixf commitcount 5000 create into dftz   (仅IXF)
db2 import to c:/dftz.ixf of ixf commitcount 5000 replace_create into dftz  (仅IXF)

15.执行一个批处理文件
       db2 –tf 批处理文件名
      (文件中每一条命令用 ;结束)
16.自动生成批处理文件
     建文本文件:temp.sql
   select 'runstats on table DB2.' || tabname || ' with distribution and  detailed indexes all;' from syscat.tables where tabschema='DB2' and type='T';
db2 –tf temp.sql>runstats.sql
17.自动生成建表(视图)语句
在服务器上:C:/sqllib/misc目录中
db2 connect to fmcdb user db2admin using lande

db2look -d fmcdb -a -e -x -o e:/creatab.sql   
db2move   database   export   -u   user -p   password
用db2move将数据备份出来

18.其他命令
grant dbadm on database to user bb

19select * from czyxx fetch first 1 rows only
20db2look –d fmcdb –u db2admin –w –asd –a –e –o a.txt21. 显示当前用户所有表

  list tables
22.列出所有的系统表

  list tables for system
23.查看表结构

db2 describe select * from user.tables

24 修改表
ALTER   TABLE   user2account   ADD   column_b   VARCHAR(20) 

ALTER TABLE FMC.ROLE_TEMPL ALTER COLUMN "TEMPL_DESCRIPTION" SET DATA TYPE VARCHAR ( 200 ) ;

ALTER   TABLE   user2account   DROP  COLUMN   column_b ;

25 函数
posstr=indexof
substr=substring
应用
select posstr(role,'_') from fmc.per_has_role where person='WF'
select c_no from xmgl.contract_info where c_no like '%"+c_no+"%' order by  substr(c_no,15,4)  desc

db2 import 效率提高

1、如果是在分区数据库的环境下,可以利用Buffered Insert来提高IMPORT的性能: 在执行IMPORT命令前,要先用INSERT BUF参数重新绑定IMPORT命令对应的绑定文件db2...
  • cws1214
  • cws1214
  • 2014-07-15 16:26:53
  • 5403

DB2在导入数据时,如果数据量过大,出现事务日志满的错误(Database transaction log is full)该如何解决,commitcount使用

问题:DB2在导入数据时,数据量过大,出现事务日志满的错误(Database transaction log is full) 解决办法:只需要在导入命令中设置commitcount参数为一个合理的值...
  • huoyin
  • huoyin
  • 2009-02-18 21:13:00
  • 3844

DB2基本命令

转自http://hi.baidu.com/daiguofu/blog/item/e058b019fb64be4543a9adca.html,有待验证1.启动数据库     db2start2.停止数...
  • xqdd
  • xqdd
  • 2007-06-28 09:44:00
  • 535

db2 命令杂烩

1、查询一张表的索引: select indname,colnames from syscat.indexes where tabname = 'table1' -- 表名必须大写! db2 ...
  • pianzif
  • pianzif
  • 2014-04-20 17:43:27
  • 806

Db2: commit时间过长引起的load性能问题

在处理一起普通的Db2锁超时事件时,发现Locker owner是一个load作业,hold住锁的类型为Z锁。由于Load采用的是’insert into xxx allow read access’...
  • qingsong3333
  • qingsong3333
  • 2018-03-27 18:21:20
  • 69

DB2 自增长列导入、导出测试

DB2 自增长列测试 1当想将表中一列修改为自动增长时,可用下面命令: Alter table    alter column   set not null Alter table alt...
  • qq_32653205
  • qq_32653205
  • 2016-08-11 15:55:29
  • 1095

IBM DB2常用命令集合

  • 2009年05月14日 23:20
  • 8KB
  • 下载

db2常用命令db2常用命令

  • 2010年03月04日 19:38
  • 48KB
  • 下载

DB2 数据库中import大数据量时提高效率

最近项目使用DB2数据库,有个业务场景是从某个系统的某个表中导入数据文件,数据量千万级,然后再导入另外一张表中(在服务器上使用shell脚本定时执行),由于权限问题,无法使用效率更高度load方式,只...
  • chengerxiang
  • chengerxiang
  • 2015-06-08 22:23:03
  • 221

DB2操作

第一章DB2开发基础 在进行DB2应用开发之前,了解DB2应用程序的结构,掌握相关概念,设置开发环境是很必要的。本章主要介绍这几个方面的内容。 1.1 DB2应用程序开发概述 1.1.1 程序结构 D...
  • u014547764
  • u014547764
  • 2016-05-27 14:42:18
  • 10506
收藏助手
不良信息举报
您举报文章:db2 常用命令
举报原因:
原因补充:

(最多只允许输入30个字)