数据移动工具
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
COMMITCOUNT 1000
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
在导完数据后,用脚本创建索引和视图,以及授权等操作。这样可以防止破坏表的完整性。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26952448/viewspace-732000/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26952448/viewspace-732000/