您的位置:首页 > 其它

db2常用语句更新

2013-12-18 15:12 204 查看
1.取前n个记录 : select * from ** FETCH FIRST N ROWS ONLY 对应mysql为 select * from ** limit x,y

2. export

(导出数据可用于import)

1、导出用户必须有SYSADM或DBADM授权,或者在表格上拥有CONTROL或SELECT权限;

2、不支持带结构列的表格数据导出;

3、可以导出带identity列的表格为ixf格式,导入时用REPLACE_CREATE、CREATE重建identity列,如果该列定义是GENERATED ALWAYS,导入时则必须指定identityignore选项。

4、指定导出格式为ixf,ixf文件中含有表格和索引定义,用import可以重建表格和索引,但是下面情况ixf文件会丢失相关信息:

* index column names contain hexadecimal values of 0×2B or 0×2D

* table contains XML columns

* table contains LOB(超过1G的定义) columns

* table is multidimensional clustered

* table contains a table partitioning key

* index name that is longer than 128 bytes due to codepage conversion

* table is a protected table

* contains action strings other than SELECT * FROM

* method N is specified

5、如果导出文件太大,可以使用where条件限制导出的数据量,分批导出;

6、导出文件格式:

* DEL (delimited ASCII format)

* WSF (work sheet format)

* IXF (integrated exchange format, PC version)

7、执行导出命令前,确认完成了commit或rollback;

8、导出格式为DEL时,如果字符列长度超过254时会有警告提示;

9、导出包是与DATETIME ISO格式绑定的,所以在sql语句中需要使用iso格式:

查询数据库(返回3行数据)

db2 select col2 from tab1 where char(col2)=’05/10/2005’;

3 record(s) selected.

导出时使用locale格式不能选择到记录

db2 export to test.del of del select col2 from test where char(col2)=’05/10/2005’;

Number of rows exported: 0

由locale格式改为iso格式

db2 export to test.del of del select col2 from test where char(col2)=’2005-05-10’;

Number of rows exported: 3

10、导出执行的三种方式

* CLP命令:export

* ADMIN_CMD存储过程的export过程

* db2export的API接口,使用c语言实现

11、del文件格式指定参数举例:db2 “export to myfile.del of del modified by chardel’’ coldel; decpt, select * from staff”

chardelx: 指定字符串的分隔符,缺省是双引号,可以指定为单引号modified by chardel'’

coldelx:指定列分隔符,缺省是逗号,可以改为分号modified by coldel;

decplusblank:指定对正数是否用+符号,缺省带+,可以指定不加正数符号

striplzeros:指定移走数据前导的0,如:+00001.8–>+1.8

测试如下

db2 “export to tb1-1.del of del select * from tb1″

+00000002.10,”abc”

db2 “export to tb1-2.del of del modified by chardel'’ coldel; decplusblank striplzeros select * from tb1″

2.10;’abc’

timestampformat=″x″时间戳格式设置,如:”YYYY/MM/DD HH:MM:SS.UUUUUU”、”yyyy.mm.dd hh:mm tt”

YYYY - Year (four digits ranging from 0000 - 9999)

M - Month (one or two digits ranging from 1 - 12)

MM - Month (two digits ranging from 01 - 12)

D - Day (one or two digits ranging from 1 - 31)

DD - Day (two digits ranging from 1 - 31)

H - Hour (one or two digits ranging from 0 - 12 for a 12 hour system, and 0 - 24 for a 24 hour system)

HH - Hour (two digits ranging from 0 - 12 for a 12 hour system, and 0 - 24 for a 24 hour system)

M - Minute (one or two digits ranging from 0 - 59)

MM - Minute (two digits ranging from 0 - 59)

S - Second (one or two digits ranging from 0 - 59)

SS - Second (two digits ranging from 0 - 59)

UUUUUU - Microsecond (6 digits ranging from 000000 - 999999)

UUUUU - Microsecond (5 digits ranging from 00000 - 99999)

UUUU - Microsecond (4 digits ranging from 0000 - 9999)

UUU - Microsecond (3 digits ranging from 000 - 999)

UU - Microsecond (2 digits ranging from 00 - 99)

U - Microsecond (1 digit ranging from 0 - 9)

TT - Meridian indicator (AM or PM)

如果指定了TT,HH就会在0-12之间显示

3.

1.db2里面的字符串连接可用"||"这个进行连接

2.如何快速删除大批量的数据表(test为数据库表)

最常用也是最多人用的语句:delete from test,但这种做法,效率比较低,花费时间太长,因为在删除数据时,要记数据库日志。

import from /dev/null of del replace into test//先清空,再导入数据(由于导入的文件为空,故相当于清空表数据),这种删除的速度较快

ALTER TABLE test activate NOT LOGGED initially WITH EMPTY TABLE ;删除表中的数据,不记日志,这种处理最快

3.导入、导出数据,支持的文件有ixf,del文件

db2 "export to fileName.del of del select * from tableName" //db2中把表中的数据导入到文件

db2 "import from fileName.del of del insert into tableName " //db2中把文件中的数据导入到表

4.DB2中检查表是否已存在

select * from "SYSIBM"."SYSTABLES" where lower(name) ='afa_maintransdtl'

5.处理db2锁表问题:

db2 “connect to afa”

db2 “get snapshot for locks on 实例名”

db2 “terminate”

然后查看相关信息,找到被锁定的表,执行以下语句:

db2 “force application(application handle) 注:application handle对应的是一个整数

6.在服务器上创建存储过程时:

应为存储过程指定特定的换行符,然后执行下面的语句:

db2 -td@ -vf fileName.sql (其中@为存储过程中指定的换行符)

7. 查看索引是否起作用

runstats on table afa.yj_jywtk with distribution and detailed indexes all;

8.截取数据库快照:

db2 "connect to 实例名"

db2 "update monitor switches using lock ON sort ON bufferpool ON uow ON table ON statement ON"

db2 "get snapshot for all on 实例名"

9. 查看存储过程

select procname,text from sysibm.sysprocedures;

10.list tables 查看数据库表

11.查找字符在字串中的位置

locate('y','xyz')

查找'y'在'xyz'中的位置。

12. 计算两个日期的相差天数

days(date('2007-03-01'))-days(date('2007-02-28'))

days 返回的是从 0001-01-01 开始计算的天数

13. 为一个用户访问另一个实例创建表映射

create alias tableName for 实例名. tableName

14.如何查看表结构

describe table tableName

or

describe select * from table_name

15.如何重新启动数据库?

restart database database_name

16.如何激活数据库?

activate database database_name

17.如何停止数据库?

deactivate database database_name

18.如何重命名表?

rename table_old to table_new

19.如何定义序列?

create sequence orderseq start with 1 increment by 1 no maxvalue no cycle cache24

20.如何查看一个表的索引

describe indexes for table tableName show detail

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: