文章

db2详解

db2详解

文章引用地址:

https://blog.csdn.net/hanxin1987216/article/details/4506012

#性能 监控命令

get monitor switches 返回会话监控开关的状态

update monitor switches using <onoff> 为设置会话监控开关的状态

reset monitor all 复位性能监控程序值

get snapshot for dbm

get snapshot for all on

get snapshot for dynamic sql on 返回动态SQL高速缓存的内容

runstats on table . 收集的统计信息

reorgchk on table all 确定是否需要重组 reorgchk on table .

reorg table 通过重组消除碎片

三种实用程序:EXPORT,IMPORT,LOAD

```plain text 这些实用程序支持的文件格式有:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
非定界或定长 ASCII(ASC):顾名思义,这种文件类型包含定长 ASCII 数据,以便与列数据对齐。每个 ASC 文件都是一个

ASCII 字符流,这个字符流由根据行和列排序的数据值组成。数据流中的行由行定界符分隔,而通常将行定界符假定为换行符。

定界 ASCII(DEL):它是各种数据库管理器用于数据交换的最常用文件格式。这种格式包含 ASCII 数据,它使用特殊字符定

界符分隔列值。数据流中的行由换行符充当行定界符进行分隔。

PC 版集成交换格式(PC version of the Integrated Exchange Format,PC/IXF):它是数据库表的结构化描述。这种文件格式不仅

可以用于导入数据,还可以用于创建目标数据库中尚不存在的表。

工作表格式(Worksheet Format,WSF):以这种格式存储的数据可以在工作表中显示。这种格式只能用于导出和导入。

游标:游标是用查询声明的。它只能用作装入操作的输入。

#EXPORT 实用程序使用 SQL SELECT 语句将数据从数据库表抽取到某个文件中。对于导出的数据而言,其文件格式可以是 DEL、IXF 或 WSF。建议您在

导出中包含 MESSAGES 子句,以便在导出期间捕获错误、警告和信息性消息。

EXPORT TO myfile.del OF DEL

```plain text
MESSAGES msg.out

    SELECT staff.name, staff.dept, org.location

    FROM org,staff

            WHERE org.deptnumb = staff.dept;

在前一页上的示例中,数据被抽取到一个 DEL 格式的文件中。缺省情况下,列值由逗号(,)分隔,而字符串由双引号(“)括起来。如果要抽取

的数据已经包含逗号和双引号,那该怎么办呢?如果是这样的话,导入或装入实用程序不可能确定:哪些符号是实际的数据,哪些是定界符。要定

制 EXPORT 的运作方式,可以使用 MODIFIED BY 子句并指定想用文件类型修饰符修改什么。EXPORT 命令的格式如下:

EXPORT TO file_name OF file_type

```plain text MODIFIED BY file_type_modifiers

MESSAGES message_file

select_statement

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
chardelx

指定 x 为新的单字符串定界符。缺省值是双引号(“)。

coldelx

指定 x 为新的单字符列定界符。缺省值是逗号(,)。

codepage=x

指定 x 这个 ASCII 字符串为输出数据的新代码页。在导出操作期间,将字符数据从应用程序代码页转换成这一代码页。

timestampformat=“x”

x 是源表中时间戳记的格式。

考虑下面这个示例:

EXPORT TO myfile.del OF DEL

MODIFIED BY chardel! coldel@ codepage=1208 timestampformat=“yyyy.mm.dd hh:mm tt”

MESSAGES msg.out

SELECT * FROM schedule

面的命令以 DEL 格式从 SCHEDULE 表导出数据,其间发生了下列行为:

字符串由感叹号(!)括起来

列由 @ 号定界

字符串被转换成代码页 1208

SCHEDULE 表中用户定义的时间戳记具有 yyyy.mm.dd hh:mm tt 这种格式

#导出大对象

#可以在控制中心导出表,并进行调度。

#IMPORT实用程序

IMPORT FROM file_name OF file_type

```plain text
MESSAGES message_file

[ INSERT | INSERT_UPDATE | REPLACE | REPLACE_CREATE | CREATE ]

INTO target_table_name

INSERT 选项将导入的数据插入表中。目标表必须已经存在。

INSERT_UPDATE 向表中插入数据,或者用匹配的主键更新表中现有的行。目标表必须存在,且定义了主键。

REPLACE 选项删除现有的全部数据,然后将导入的数据插入现有的目标表中。

有 了 REPLACE_CREATE 选项,如果目标表存在,那么实用程序删除现有的数据,然后插入新数据,就好像指定了 REPLACE 选项一样。如果没有定义目标表,那么在导入数据之前将先创建该表及其相关索引。正如您可以想到的那样,输入文件必须是 PC/IXF 格式的,因为这种格式含有导出表的结构化描述。如果目标表是由外键引用的父表,就不能使用 REPLACE_CREATE。

CREATE 选项创建目标表及其索引,然后将数据导入到新表中。它唯一支持的文件格式是 PC/IXF。您也可以指定表空间的名称,新表将创建于其中。

示例:

IMPORT FROM emp.ixf OF IXF

COMMITCOUNT 500

```plain text MESSAGES msg.out

CREATE INTO employee IN datatbsp INDEX IN indtbsp

1
如果上面的命令因为某些原因而执行失败,那么您可以使用消息文件确定被成功导入并提交的最后一行。然后,您可以使用 ```

RESTARTCOUNT 选项重新启动导入。在下面的命令中,实用程序将跳过前面的 30000 条记录才开始 IMPORT 操作。

IMPORT FROM myfile.ixf OF IXF

COMMITCOUNT 500 RESTARTCOUNT 30000

MESSAGES msg.out

INSERT INTO newtable

```plain text compound=x

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
使用非原子的复合 SQL 来插入数据。每次会尝试 x 条语句。

indexschema=schema

在创建索引期间对索引使用指定的模式。

striptblanks

在向变长字段装入数据时,截断任何尾部空格。

lobsinfile

指出要导入 LOB 数据。实用程序将检查 LOBS FROM 子句,以获取输入 LOB 文件的路径。

这里有一个实际使用这些文件类型修饰符的示例:

IMPORT FOR inputfile.asc OF ASC

```plain text
LOBS FROM /u/db2load/lob1, /u/db2load/lob2

MODIFIED BY compount=5 lobinsfile

```plain text INSERT INTO newtable

1
2
3
4
5
6
7
使用控制中心进行import。

##LOAD实用程序概述

```plain text
    LOAD 实用程序是另一种用数据来填充表的方法。经过格式化的页被直接

写入数据库。这种机制允许进行比 IMPORT 实用程序更有效的数据移动。

不过,LOAD 实用程序不执行某些操作,如引用或表约束检查以及触发器调用。

LOAD FROM input_source OF input_type

```plain text MESSAGES message_file

[ INSERTREPLACETERMINATERESTART ]

INTO target_tablename ```

本文由作者按照 CC BY 4.0 进行授权