分类: 数据库开发技术
2008-05-28 15:08:18
不同平台DB2数据库之间大批量的移动数据(二)——Load篇
在前面一篇文章中我介绍了Export/Import在数据交换中的使用方法。在本次我将详细介绍另外一种导入数据的工具LOAD(装载)的使用。
Load的功能与Import类似,但实现方式上有比较大的区别。Load会把要导入的数据格式化为数据页,并利用并行I/O写入数据。这种机制允许进行比 IMPORT 实用程序更有效的数据移动。这样用Load在处理大批量数据导入的时候实际上是比Import效率高很多。不过,Load实用程序不执行某些操作,如引用或表约束检查以及触发器调用。因为Load工具修改不记入日志,所以不能使用日志文件前滚。
以下是 LOAD 命令的核心;该命令还支持其它一些选项和修饰符,具体参数请查阅相应指南手册Command Reference。要成功地执行该命令,就必须具有 SYSADM、DBADM 或 LOAD 权限,或者对装入过程中所涉及的表具有 INSERT 和/或 DELETE 特权。
LOAD FROM input_source OF input_type
MESSAGES message_file
[ INSERT | REPLACE | TERMINATE | RESTART ]
INTO target_tablename
Load所支持的文件类型在上一篇中已经介绍了。不过,Load操作不支持WSF类型的文件作为数据导入文件。另外LOAD 的源输入的格式可以是CURSOR(游标),它是从 SELECT 语句返回的结果集。示例显示如下:
DECLARE mycursor CURSOR FOR SELECT col1, col2, col3 FROM tab1;
LOAD FROM mycursor OF CURSOR INSERT INTO newtab;
装入目标必须存在,该实用程序才能启动。这个目标可以是表、类型表或表别名。不支持向系统表或临时表进行装入。
LOAD 可以以四种不同方式执行:
完整的装入过程分为四个不同阶段。
Load过程的所有阶段都是操作的一部分,只有在所有这四个阶段完全成功后,该操作才算完成。在每个阶段Load工具都会生成消息。一旦这其中的一个阶段发生错误,这些消息就可以帮助我们分析并解决问题。
最后,总结下前面所说的;比较一下Load和Import
IMPORT vs. LOAD