数据移动工具

IMPORT、EXPORT、LOAD(均一次只能处理一张表,主体处理表,也可以处理其他一些对象)

支持以下格式的文件

IXF - Integrated Exchange Format(推荐使用)

DEL - Dellmlted ASCII(常用些)

ASC - Non-dellmlted ASCII

WSF - Work Sheet Format

db2move - 适用于导出多张表和其他数据集,格式必须为IXF

相当于对IMPORT、EXPORT、LOAD的批处理模式

a、EXPORT       a.1 本质:使用SELECT语句从数据库中导出数据

a.2 支持的导出数据格式(主要的):

- IXF 包含表定义,最多的属性和索引描述

- DEL Dellmlted ASCII Format

a.3 使用MESSAGES选项能够记录错误信息、警告信息和导出成功的记录数信息

语法:

EXPORT TO {file-name(文件名,可指定路径)} OF {file-type(文件类型)}

MESSAGES{message-file(记录信息的文件,可指定路径)}{SELECT-statement}

其他的附加选项可以通过MODIFIED BY 定制导出操作,例如:分隔符,代码页等

如:EXPORT TO {file-name} OF {file-type}

MODIFIED BY {file-type-modifier}

MESSAGES{message-file}{SELECT-statement}

examples:

EXPORT TO emp_photo.ixf of IXF

MESSAGES /db2log/exp.msg  (MESSAGES can be used to record output messages)

SELECT * FROM emp_photo;

EXPORT TO employee.del of DEL

MODIFIED BY chardel'' coldel!(MODIFIERS can be used to customize output data file)

SELECT firstname,lastname

FROM employee

FETCH FIRST 10 ROWS ONLY;-- 分隔符可以自己定义

导出大对象    - 缺省情况下,每个LOB的值最大只能导出32KB,以便与其他列内容能够存放于

同一文件中,如果超过了32KB,则会被截断,对于32KB的大字段,应当单独指定文件

- 可以使用LOBSINFILE参数指定多个LOB存入单一的文件

- LOB位置指定符是一个能够找到LOB数据位置的字符串

EXAMPLE:(大于32KB的文件)

EXPORT TO EMP.DEL OF DEL

LOBFILE C:\temp\emp.LOBS(指定路径)

MODIFIED BY LOBSINFILE (指定多个LOB存入单一的文件)

SELECT * FROM EMP;

结果:EMP.DEL中LOB字段大于32KB的所有记录都存在于EMP.LOBS,通过这种方式将

解决数据库表中的大字段被截断的情况

b、IMPORT:从一个文件向数据库表导入数据(记录日志,速度较慢)

b.1 导入文件格式:IXF、DEL、ASC(Flxed length ASCII)

b.2 使用MESSAGES选项能够记录错误信息、警告信息和导出成功的记录数信息

语法:

IMPORT FROM myfile.ixf

OF IXF MESSAGES msg.out

[INSERT/INSERT_UPDATE/REPLACE/REPLACE_CREATE/CREATE]

INTO newtab;

INSERT:将输入数据插入到目标表,不更改现有数据

INSERT_UPDATE:使用数入行的值更新具有匹配主键值的行,若不匹配,则插入

REPLACE:删除所有现有数据并插入数据,保留表和索引定义

REPLACE_CREATE:删除所有现有数据并插入导入数据,同时保留表和索引定义

如果目标表和索引不存在,则创建目标表和索引

CREATE:创建目标表和索引,可指定在其中创建新表的表空间名称

examples:

IMPORT FROM emp.ixf OF IXF

COMMITCOUNT1000

MESSAGES{message-file}

REPLACE_CREATE         INTO emp;

注意:COMMITCOUNT 1000(插入记录数达到1000则自动COMMIT一次)

a、IMPORT整个过程时记录日志的,插入数据量特别大提交可能不成功;

b、即使提交成功,也会影响性能;

c、LOAD(不记录日志):是高速、底层的数据装载器

更快,适合大数据量

LOAD过程分4个阶段:

1、装入

将数据装入到表中,必要时收集索引键和表统计信息。并且,将根据LOAD命令中

的SAVECOUNT参数指定的时间间隔简历保存点或者一致点,将生成信息以指示在

保存点成功装入的输入行数

2、构建

根据装入阶段的索引键生成索引,对索引排序,收集索引统计信息

3、删除

删除导致唯一键或主键违例的行,如果指定了装入异常表,被删除的行则被存在此表中

4、索引复制

将索引数据从系统临时表空间复制到原始表空间,在指定了READ ACCESS选项的装入

操作期间,仅当指定使用系统临时表空间来创建索引时,才会出现这种情况

- 支持的格式包括DEL、ASC、PC/IXF,游标

- 使用MESSAGES选项能够记录错误信息、警告信息和其他信息

- 在LOAD之前,目标必须存在,而且不能是系统表或者临时表

- 所需要的授权与权利

- 必须有SYSADM,DBADM,或者LOAD权限

- INSERT模式必须有INSERT权限

- RELPACE模式必须有INSERT和DELETE权限

语法:

LOAD FROM emp.ixf OF IXF

MODIFIED BY {file-type modifiers} -- MODIFIERD BY can apply modifiers to define data format

MESSAGES {message-file}

REPLACE INTO emp;

SET INTEGRITY FOR emp

ALL IMMEDIATE UNCHECKED;  -- 唯一键的校验

实际操作中,使用load的时候可能会发生破坏表完整性约束的情况,需要执行set integrity for immediate checked消除表check pending的状态。

d、db2move    EASY way to move a set of tables and data

语法:db2move   []    database-name:数据库名称(想要移动的表所在数据库)

action:要执行的操作(export、import、load)

option:指定一个选项来定义操作的范围。

例如,可以将一个操作限制在特定的表(-tn)、表空间(-ts)、表创建者(-tc)或模式名(-sn)范围内。

指定表、表空间或表的创建者的一个子集只对   export   操作有效。如果指定多个值,就必须使用逗号将其分隔开;

在值列表项之间不允许有空格。可以指定的项最多为   10   个。

-io   import-option

指定DB2的import工具可以运行的一种模式。

有效的选项有:CREATE、INSERT、INSERT_UPDATE、REPLACE和REPLACE_CREATE。缺省值为REPLACE_CREATE。

-lo   load-option

指定DB2的load工具可以运行的一种模式。有效的选项有:INSERT和REPLACE。缺省值为   INSERT。

-l   lobpaths

指定要创建或查找的LOB文件的位置。必须指定一个或多个绝对路径名。如果指定了多个绝对路径,就必须使用逗号将其分隔开;

值之间不允许有空格。缺省值是当前目录。

-u   userid

指定一个用户ID,该工具可以使用这个用户 ID 登录到远程系统上。

-p   password

指定对该用户进行认证的密码;该工具需要使用一个有效的用户ID和密码登录到远程系统上。

db2move是DB2数据转移命令,用于不同操作系统之间(如linux和windows)的数据转移.

可以先用db2move export将数据导出,然后在另一个DB2里用db2move import或db2move load导入数据.

导出方法:

建立一个空文件夹,进入该文件夹使用

db2move Mydatabase export 导出数据.

导入方法:

进入导出的文件夹,输入命令db2move Newdb load

在导完数据后,用脚本创建索引和视图,以及授权等操作。这样可以防止破坏表的完整性。